is there a reason why you aren't using the built-in functionality of gRPC to have make/receive streaming calls instead of creating your own Stream and StreamManager?
The official RouteGuide example has information on how to use all the different types of supported RPC calls including request-side streaming, response-side streaming and bi-di streaming. This gRPC guide also explains it in detail.