Hi all:
According to the the official document of the grpc_impl::CompletionQueue::Next() method:
Server-side Finish, : ok means that the data/metadata/status/etc is going to go to the wire. If it is false, it not going to the wire because the call is already dead (i.e., canceled, deadline expired, other side dropped the channel, etc).
I've also prove it by an experiment: setting the timeout deadline to A on the client side, and sleeping on the server side for B which ensures that the timeout event will indeed happened. And the server side Next() is exactly acting like what the document said : it return a false value for the ok output parameter.
But what I can't understand is : how does the server detect the timeout event ? Just by the deadline value set on the client side ? If it's ture, the clocks may diff slightly between the server and the client, resulting in an inaccurate judgement.
Can someone help explaining this ? Thanks.
- Regards
- Arthur