grpc-swift
grpc-swift copied to clipboard
How to check if client cancelled / deadline exceeded
From the gRPC docs:
On the server side, the server can query to see if a particular RPC is no longer wanted. Before a server starts work on a response it is very important to check if there is still a client waiting for it. This is especially important to do before starting expensive processing.
How can I check in Swift on the server side, if the client cancelled the request or the client provided deadline exceeded? The GRPCAsyncServerCallContext
does not seem to give much info on this.
Related, is the deadline passed to the server so that I can use it as a deadline for other dependent calls?
How can I check in Swift on the server side, if the client cancelled the request...
If the client cancels then the stream will be closed and the Task
executing the server handler will be cancelled.
...or the client provided deadline exceeded? The GRPCAsyncServerCallContext does not seem to give much info on this.
We don't currently monitor this on the server side; if the client set a timeout the 'grpc-timeout' header will be set, so it should be possible to parse that into a timeout which in turn can be made into a deadline. We don't currently have code to do that but it shouldn't be too difficult to do.
That sound's great, thank you!