From 44bc1cdaeb282f1ed80f2e905598a880b5fd340c Mon Sep 17 00:00:00 2001 From: James Newton-King Date: Mon, 20 May 2019 21:26:03 +1200 Subject: [PATCH] PR feedback --- .../AsyncStreamReaderExtensions.cs | 50 +++++++++++++++++ .../Internal/AsyncCallServerTest.cs | 1 - .../Grpc.Core/Utils/AsyncStreamExtensions.cs | 53 ------------------- .../ReflectionClientServerTest.cs | 1 - 4 files changed, 50 insertions(+), 55 deletions(-) create mode 100644 src/csharp/Grpc.Core.Api/AsyncStreamReaderExtensions.cs diff --git a/src/csharp/Grpc.Core.Api/AsyncStreamReaderExtensions.cs b/src/csharp/Grpc.Core.Api/AsyncStreamReaderExtensions.cs new file mode 100644 index 00000000000..a1f895723ed --- /dev/null +++ b/src/csharp/Grpc.Core.Api/AsyncStreamReaderExtensions.cs @@ -0,0 +1,50 @@ +#region Copyright notice and license + +// Copyright 2015 gRPC authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#endregion + +using System; +using System.Threading; +using System.Threading.Tasks; + +namespace Grpc.Core +{ + /// + /// Extension methods for . + /// + public static class AsyncStreamReaderExtensions + { + /// + /// Advances the stream reader to the next element in the sequence, returning the result asynchronously. + /// + /// The message type. + /// The stream reader. + /// + /// Task containing the result of the operation: true if the reader was successfully advanced + /// to the next element; false if the reader has passed the end of the sequence. + /// + public static Task MoveNext(this IAsyncStreamReader streamReader) + where T : class + { + if (streamReader == null) + { + throw new ArgumentNullException(nameof(streamReader)); + } + + return streamReader.MoveNext(CancellationToken.None); + } + } +} diff --git a/src/csharp/Grpc.Core.Tests/Internal/AsyncCallServerTest.cs b/src/csharp/Grpc.Core.Tests/Internal/AsyncCallServerTest.cs index d343271ffbe..fd221613c04 100644 --- a/src/csharp/Grpc.Core.Tests/Internal/AsyncCallServerTest.cs +++ b/src/csharp/Grpc.Core.Tests/Internal/AsyncCallServerTest.cs @@ -23,7 +23,6 @@ using System.Runtime.InteropServices; using System.Threading.Tasks; using Grpc.Core.Internal; -using Grpc.Core.Utils; using NUnit.Framework; namespace Grpc.Core.Internal.Tests diff --git a/src/csharp/Grpc.Core/Utils/AsyncStreamExtensions.cs b/src/csharp/Grpc.Core/Utils/AsyncStreamExtensions.cs index 6ca72a1139b..fce53c70074 100644 --- a/src/csharp/Grpc.Core/Utils/AsyncStreamExtensions.cs +++ b/src/csharp/Grpc.Core/Utils/AsyncStreamExtensions.cs @@ -18,7 +18,6 @@ using System; using System.Collections.Generic; -using System.Threading; using System.Threading.Tasks; namespace Grpc.Core.Utils @@ -28,41 +27,12 @@ namespace Grpc.Core.Utils /// public static class AsyncStreamExtensions { - /// - /// Advances the stream reader to the next element in the sequence, returning the result asynchronously. - /// - /// The message type. - /// The stream reader. - /// - /// Task containing the result of the operation: true if the reader was successfully advanced - /// to the next element; false if the reader has passed the end of the sequence. - /// - public static Task MoveNext(this IAsyncStreamReader streamReader) - where T : class - { - if (streamReader == null) - { - throw new ArgumentNullException(nameof(streamReader)); - } - - return streamReader.MoveNext(CancellationToken.None); - } - /// /// Reads the entire stream and executes an async action for each element. /// public static async Task ForEachAsync(this IAsyncStreamReader streamReader, Func asyncAction) where T : class { - if (streamReader == null) - { - throw new ArgumentNullException(nameof(streamReader)); - } - if (asyncAction == null) - { - throw new ArgumentNullException(nameof(asyncAction)); - } - while (await streamReader.MoveNext().ConfigureAwait(false)) { await asyncAction(streamReader.Current).ConfigureAwait(false); @@ -75,11 +45,6 @@ namespace Grpc.Core.Utils public static async Task> ToListAsync(this IAsyncStreamReader streamReader) where T : class { - if (streamReader == null) - { - throw new ArgumentNullException(nameof(streamReader)); - } - var result = new List(); while (await streamReader.MoveNext().ConfigureAwait(false)) { @@ -95,15 +60,6 @@ namespace Grpc.Core.Utils public static async Task WriteAllAsync(this IClientStreamWriter streamWriter, IEnumerable elements, bool complete = true) where T : class { - if (streamWriter == null) - { - throw new ArgumentNullException(nameof(streamWriter)); - } - if (elements == null) - { - throw new ArgumentNullException(nameof(elements)); - } - foreach (var element in elements) { await streamWriter.WriteAsync(element).ConfigureAwait(false); @@ -120,15 +76,6 @@ namespace Grpc.Core.Utils public static async Task WriteAllAsync(this IServerStreamWriter streamWriter, IEnumerable elements) where T : class { - if (streamWriter == null) - { - throw new ArgumentNullException(nameof(streamWriter)); - } - if (elements == null) - { - throw new ArgumentNullException(nameof(elements)); - } - foreach (var element in elements) { await streamWriter.WriteAsync(element).ConfigureAwait(false); diff --git a/src/csharp/Grpc.Reflection.Tests/ReflectionClientServerTest.cs b/src/csharp/Grpc.Reflection.Tests/ReflectionClientServerTest.cs index 9ef9680f71c..b77f245667c 100644 --- a/src/csharp/Grpc.Reflection.Tests/ReflectionClientServerTest.cs +++ b/src/csharp/Grpc.Reflection.Tests/ReflectionClientServerTest.cs @@ -21,7 +21,6 @@ using System.Text; using System.Threading.Tasks; using Grpc.Core; -using Grpc.Core.Utils; using Grpc.Reflection; using Grpc.Reflection.V1Alpha; using NUnit.Framework;