aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/csharp/Grpc.Core/Internal/AsyncCompletion.cs
diff options
context:
space:
mode:
Diffstat (limited to 'src/csharp/Grpc.Core/Internal/AsyncCompletion.cs')
-rw-r--r--src/csharp/Grpc.Core/Internal/AsyncCompletion.cs18
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)