1 #region Copyright notice and license 2 3 // Copyright 2015 gRPC authors. 4 // 5 // Licensed under the Apache License, Version 2.0 (the "License"); 6 // you may not use this file except in compliance with the License. 7 // You may obtain a copy of the License at 8 // 9 // http://www.apache.org/licenses/LICENSE-2.0 10 // 11 // Unless required by applicable law or agreed to in writing, software 12 // distributed under the License is distributed on an "AS IS" BASIS, 13 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 // See the License for the specific language governing permissions and 15 // limitations under the License. 16 17 #endregion 18 19 using System; 20 using System.Threading; 21 using System.Threading.Tasks; 22 23 namespace Grpc.Core 24 { 25 /// <summary> 26 /// Extension methods for <see cref="IAsyncStreamReader{T}"/>. 27 /// </summary> 28 public static class AsyncStreamReaderExtensions 29 { 30 /// <summary> 31 /// Advances the stream reader to the next element in the sequence, returning the result asynchronously. 32 /// </summary> 33 /// <typeparam name="T">The message type.</typeparam> 34 /// <param name="streamReader">The stream reader.</param> 35 /// <returns> 36 /// Task containing the result of the operation: true if the reader was successfully advanced 37 /// to the next element; false if the reader has passed the end of the sequence. 38 /// </returns> 39 public static Task<bool> MoveNext<T>(this IAsyncStreamReader<T> streamReader) 40 where T : class 41 { 42 if (streamReader == null) 43 { 44 throw new ArgumentNullException(nameof(streamReader)); 45 } 46 47 return streamReader.MoveNext(CancellationToken.None); 48 } 49 } 50 } 51