diff options
Diffstat (limited to 'src/csharp/Grpc.Core/Internal/AsyncCompletion.cs')
-rw-r--r-- | src/csharp/Grpc.Core/Internal/AsyncCompletion.cs | 18 |
1 files changed, 9 insertions, 9 deletions
diff --git a/src/csharp/Grpc.Core/Internal/AsyncCompletion.cs b/src/csharp/Grpc.Core/Internal/AsyncCompletion.cs index 673b527fb2..c88cae98fe 100644 --- a/src/csharp/Grpc.Core/Internal/AsyncCompletion.cs +++ b/src/csharp/Grpc.Core/Internal/AsyncCompletion.cs @@ -45,22 +45,22 @@ namespace Grpc.Core.Internal /// <summary> /// If error != null, there's been an error or operation has been cancelled. /// </summary> - internal delegate void AsyncCompletionDelegate(Exception error); + internal delegate void AsyncCompletionDelegate<T>(T result, Exception error); /// <summary> /// Helper for transforming AsyncCompletionDelegate into full-fledged Task. /// </summary> - internal class AsyncCompletionTaskSource + internal class AsyncCompletionTaskSource<T> { - readonly TaskCompletionSource<object> tcs = new TaskCompletionSource<object>(); - readonly AsyncCompletionDelegate completionDelegate; + readonly TaskCompletionSource<T> tcs = new TaskCompletionSource<T>(); + readonly AsyncCompletionDelegate<T> completionDelegate; public AsyncCompletionTaskSource() { - completionDelegate = new AsyncCompletionDelegate(HandleCompletion); + completionDelegate = new AsyncCompletionDelegate<T>(HandleCompletion); } - public Task Task + public Task<T> Task { get { @@ -68,7 +68,7 @@ namespace Grpc.Core.Internal } } - public AsyncCompletionDelegate CompletionDelegate + public AsyncCompletionDelegate<T> CompletionDelegate { get { @@ -76,11 +76,11 @@ namespace Grpc.Core.Internal } } - private void HandleCompletion(Exception error) + private void HandleCompletion(T value, Exception error) { if (error == null) { - tcs.SetResult(null); + tcs.SetResult(value); return; } if (error is OperationCanceledException) |