From 3ee4dabc2dfdf7f55b3cc12576de53cd4b767655 Mon Sep 17 00:00:00 2001 From: j6carey Date: Mon, 2 Apr 2018 09:34:35 -0700 Subject: [PATCH] Add a comment to ClientReaderRequest. (#55) It was not obvious from the type how many times the final field of ClientReaderRequest would be invoked. (Assuming it is invoked once per stream increment results in a hang, which can be confusing.) --- src/Network/GRPC/HighLevel/Client.hs | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/Network/GRPC/HighLevel/Client.hs b/src/Network/GRPC/HighLevel/Client.hs index 8cdcf23..408d1fa 100644 --- a/src/Network/GRPC/HighLevel/Client.hs +++ b/src/Network/GRPC/HighLevel/Client.hs @@ -55,6 +55,9 @@ data ClientRequest (streamType :: GRPCMethodType) request response where ClientNormalRequest :: request -> TimeoutSeconds -> MetadataMap -> ClientRequest 'Normal request response ClientWriterRequest :: TimeoutSeconds -> MetadataMap -> (StreamSend request -> IO ()) -> ClientRequest 'ClientStreaming request response ClientReaderRequest :: request -> TimeoutSeconds -> MetadataMap -> (MetadataMap -> StreamRecv response -> IO ()) -> ClientRequest 'ServerStreaming request response + -- ^ The final field will be invoked once, and it should repeatedly + -- invoke its final argument (of type @(StreamRecv response)@) + -- in order to obtain the streaming response incrementally. ClientBiDiRequest :: TimeoutSeconds -> MetadataMap -> (MetadataMap -> StreamRecv response -> StreamSend request -> WritesDone -> IO ()) -> ClientRequest 'BiDiStreaming request response data ClientResult (streamType :: GRPCMethodType) response where