GrpcServerFlow |
A very simplified overview of gRPC server flow:
A ServerCallHandler for a given method is created, depending on client type either
ServerCalls.StreamingServerCallHandler or ServerCalls.UnaryServerCallHandler
(ie: Streaming / Unary prefix refers to client's type
(Server refers to Call ), naming scheme here is not intuitive...).
When a call is received ServerCallHandler.startCall(ServerCall, Metadata) is called in
intercepter chain, which returns a ServerCall.Listener , respectively either
ServerCalls.StreamingServerCallHandler.StreamingServerCallListener or
ServerCalls.UnaryServerCallHandler.UnaryServerCallListener .
Streaming client flow:
ServerCalls.StreamingServerCallHandler#startCall(ServerCall, Metadata) calls
ServerCalls.StreamingRequestMethod#invoke(StreamObserver) which calls user's code to
obtain request StreamObserver , which is then passed to constructor of
ServerCalls.StreamingServerCallHandler.StreamingServerCallListener .
|