Fun with gRPC and C++
Motivation
Why am I writing this series? It happens that I wanted to use gRPC in my upcoming DNS server.
I have used gRPC in the past - with great pain. This time around I looked at some examples and made kind of an implementation - but I realized it was crap. To add injury to insult, there were simply too many things I did not know or understand properly to fix it. So I decided to spend some time to play with gRPC to get a better understanding.
It's said that you don't truly understand something until you can explain it to somebody else. That's my motivation to write this series of articles.
It's my hope that somebody, one day, might find it useful. The almost total lack of in-depth articles and blog posts about asynchronous gRPC for C++ suggest that either I'm a bit slow, or it's not used very much. At least not with streaming in one or both directions. That's a shame. gRPC is an awesome tool to build both massively scalable servers and fast micro-services in C++!
- Overview
- Implementing a unary, async server
- Implementing a unary, async client
- Implementing an async server with one message and one stream.
- Implementing an async client with one message and one stream.
- Implementing the full routeguide async server
- Implementing the full routeguide async client
- Exploring the async callback interface for gRPC in C++
- Exploring how to implement the server using gRPC async callbacks
- Exploring how to implement the client using gRPC async callbacks
- Using QT's native gRPC support
