review comments

pull/21667/head
Jan Tattermusch 5 years ago
parent abeac187b6
commit 32b487bc4d
  1. 10
      src/csharp/Grpc.Core.Api/ChannelBase.cs
  2. 21
      src/csharp/Grpc.Core/Channel.cs

@ -68,9 +68,15 @@ namespace Grpc.Core
} }
/// <summary>Provides implementation of a non-virtual public member.</summary> /// <summary>Provides implementation of a non-virtual public member.</summary>
protected virtual Task ShutdownAsyncCore() #pragma warning disable 1998
protected virtual async Task ShutdownAsyncCore()
{ {
throw new NotImplementedException(); // default implementation is no-op for backwards compatibility, but all implementations
// are expected to override this method.
// warning 1998 is disabled to avoid needing TaskUtils.CompletedTask, which is
// only available in Grpc.Core
} }
#pragma warning restore 1998
} }
} }

@ -210,18 +210,8 @@ namespace Grpc.Core
} }
} }
/// <summary> /// <summary>Provides implementation of a non-virtual public member.</summary>
/// Shuts down the channel cleanly. It is strongly recommended to shutdown protected override async Task ShutdownAsyncCore()
/// all previously created channels before exiting from the process.
/// </summary>
/// <remarks>
/// This method doesn't wait for all calls on this channel to finish (nor does
/// it explicitly cancel all outstanding calls). It is user's responsibility to make sure
/// all the calls on this channel have finished (successfully or with an error)
/// before shutting down the channel to ensure channel shutdown won't impact
/// the outcome of those remote calls.
/// </remarks>
public new async Task ShutdownAsync()
{ {
lock (myLock) lock (myLock)
{ {
@ -246,13 +236,6 @@ namespace Grpc.Core
await GrpcEnvironment.ReleaseAsync().ConfigureAwait(false); await GrpcEnvironment.ReleaseAsync().ConfigureAwait(false);
} }
/// <summary>Provides implementation of a non-virtual public member.</summary>
protected override Task ShutdownAsyncCore()
{
// use the same behavior for ChannelBase.ShutdownAsync as for Channel.Shutdown()
return ShutdownAsync();
}
/// <summary> /// <summary>
/// Create a new <see cref="CallInvoker"/> for the channel. /// Create a new <see cref="CallInvoker"/> for the channel.
/// </summary> /// </summary>

Loading…
Cancel
Save