Hi Filip,

Sorry for the delayed response,
server sample code works like below

grpc::Status StreamMethod(servercontext ..)
{

...
while(interface->Read()){


}//if your client is killed then, your server Read will come out of while
}

So tested this in VS.If I close my client then server-side will come out of
this Reading () loop.

Regards,
SN


On Wed, Apr 7, 2021 at 2:54 AM Filip Mrázek <[email protected]> wrote:

> Hi,
> thak you for your reply. Client controls robot (after calling *connect *with
> master request) via several unary rpc calls (move, setTool, etc.). I was
> thinking about something like this: *rpc (stream Control) returns (stream
> ControlResponse), *but it's hard to create clean elegant *Control*
> message to contain everything needed. It would be nice to be able to send
> multiple message types. (and I think it's possible only with *oneof *nowadays,
> which I don't like, beacause every new command means to edit proto on two
> locations (new message type and adding message to oneof).
> Anyway, am I able to detect client cannot send request with stream? (he
> disconnected) How? Is there any example, please?
> Thanks.
>
> Regards,
>
> Filip.
> Dne úterý 6. dubna 2021 v 21:02:31 UTC+2 uživatel [email protected]
> napsal:
>
>> Hi Filip,
>> I believe I can understand your problem.
>>
>> As you have mentioned your client is master or controller for Robot,
>> right?
>> In that case how are you sending the control instruction to the robot, is
>> there any stream then you can easily detect the client disconnection.
>> If you are reading at server end when the client dies the read will not
>> return true, so you can understand from there.
>>
>> Otherwise you have to introduce some new API to notify client
>> disconnection and keep that call in catch() block somehow. That may help.
>>
>> Regards,
>> SN
>>
>> On Friday, 2 April 2021 at 16:13:21 UTC+5:30 Filip Mrázek wrote:
>>
>>> Hi,
>>> I would like to write gRPC server in C++, which is able to detect if
>>> client disconnected from the channel (client crashed or closed app). I need
>>> this, because server manages a physical robot and only one client can
>>> controll the robot at the same time (other clients can check only robot's
>>> properties such as position and so on).
>>> I've got *rpc connect(ConnectionInfo) returns(Token) *where
>>> ConnectionInfo contains information wheater client wants to control robot
>>> (wants to be master) or not and if it's possible, server returns access
>>> token. After the master client disconnects, I want to remove token from
>>> server to able other clients connect as master.
>>> The only solution I found out is to have *rpc disconnect()
>>> returns(Empty)*, but I doesn't cover case when client crash or just
>>> forget to call *disconnect *and robot is blocked*.*
>>> Is it possible with c++ gRPC, or what whould you recommend as the best
>>> solution fot this problem?
>>> Thank you very much.
>>>
>>> Filip.
>>>
>>> PS: I found several discussions, but none of them is helpful.
>>> https://groups.google.com/g/grpc-io/c/C0rAhtCUhSs/m/SzFDLGqiCgAJ
>>> https://groups.google.com/g/grpc-io/c/EIcQlLqlNQg
>>>
>> --
> You received this message because you are subscribed to a topic in the
> Google Groups "grpc.io" group.
> To unsubscribe from this topic, visit
> https://groups.google.com/d/topic/grpc-io/KRhWNAoPUO8/unsubscribe.
> To unsubscribe from this group and all its topics, send an email to
> [email protected].
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/grpc-io/e906121c-5710-48ea-a40f-ff313fe70779n%40googlegroups.com
> <https://groups.google.com/d/msgid/grpc-io/e906121c-5710-48ea-a40f-ff313fe70779n%40googlegroups.com?utm_medium=email&utm_source=footer>
> .
>

-- 
You received this message because you are subscribed to the Google Groups 
"grpc.io" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/grpc-io/CAKPYA230umKt3EMcU_8P8Bvck%3Dtk7XP%2BNpAQp5Y%2BBRm8u4ZgWA%40mail.gmail.com.

Reply via email to