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 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/e906121c-5710-48ea-a40f-ff313fe70779n%40googlegroups.com.
