I'm new to grpc (love it so far!) and have a helloworld bidirectional streaming example working in C++. I made this by going through the helloworld and route_guide examples and combining the two so I can stream HelloRequest and HelloResponse messages back and forth between the C++ client and C++ server in any order I choose.
My question is: is there such a thing as 'async bidirectional streaming'?
My understanding of async in the single non-streaming case is that it allows the program to do something else and not block while waiting for the response to the rpc. In the bidirectional streaming case I believe I can send something from the client to the server, do something else, send something else, etc... and so achieve the same non-blocking feature.
Do I gain anything by implementing the completion queue in bidirectional streaming case, or is it only useful for the non-streaming variants?? i.e. have I got already got the most general/flexible option already working, or would using a completion queue in my bidirectional streaming code give me any extra features/advantages/possibilities?