From 2eb09ee543e5ce9e34e895b5d2a6fbff79d6ddc6 Mon Sep 17 00:00:00 2001 From: Jan Tattermusch Date: Tue, 14 Jun 2016 17:50:20 -0700 Subject: [PATCH] improve docs for IAsyncStreamReader --- src/csharp/Grpc.Core/IAsyncStreamReader.cs | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/src/csharp/Grpc.Core/IAsyncStreamReader.cs b/src/csharp/Grpc.Core/IAsyncStreamReader.cs index 49e1ea78325..aa3b802a50f 100644 --- a/src/csharp/Grpc.Core/IAsyncStreamReader.cs +++ b/src/csharp/Grpc.Core/IAsyncStreamReader.cs @@ -41,10 +41,24 @@ namespace Grpc.Core { /// /// A stream of messages to be read. + /// Messages can be awaited await reader.MoveNext(), that returns true + /// if there is a message available and false if there are no more messages + /// (i.e. the stream has been closed). + /// + /// On the client side, the last invocation of MoveNext() either returns false + /// if the call has finished successfully or throws RpcException if call finished + /// with an error. Once the call finishes, subsequent invocations of MoveNext() will + /// continue yielding the same result (returning false or throwing an exception). + /// + /// + /// On the server side, MoveNext() does not throw exceptions. + /// In case of a failure, the request stream will appear to be finished + /// (MoveNext will return false) and the CancellationToken + /// associated with the call will be cancelled to signal the failure. + /// /// /// The message type. public interface IAsyncStreamReader : IAsyncEnumerator { - // TODO(jtattermusch): consider just using IAsyncEnumerator instead of this interface. } }