Hello group,
I am in the process of transforming a number of gRPC services to an async approach. To this end, I have implemented a base architecture for my calls, starting out with the async server example in the code and extending it with a template base class for my calls. Unlike the example, the actual work is done in a workerthread running a number of fibers where I post all the work into.
The question is: What happens when things go south?
For example, when the caller drops the connection because it runs into its timeout. What happens to the call? Will it somehow be shut down? And how do I notice that? Since my actual work is happening in another thread I need to understand the lifecycle of the object better.
The same goes for the call itself to timeout. Some of my implementations involve blocking file IO and other stuff that may exceed a timeout I am setting myself. Am I right assuming that I'm supposed to call Finish() anyway? And would I be able to tell Finish() that this call is faulty or would I use the actual response payload to relay this information?
What other error conditions should I take care of that the example doesn't cover? I'm thinking unparseable calls? Unimplemented methods? Anything really.
Can anyone shed some light on this?
Best regards...
Stephan