Make Client Side Event Handlers Async (#610)
This commit is contained in:
parent
6332e98d03
commit
d68de2b5ea
|
|
@ -41,7 +41,11 @@ namespace ClientSample
|
|||
{
|
||||
var cts = new CancellationTokenSource();
|
||||
connection.Received += data => Console.Out.WriteLineAsync($"{Encoding.UTF8.GetString(data)}");
|
||||
connection.Closed += e => cts.Cancel();
|
||||
connection.Closed += e =>
|
||||
{
|
||||
cts.Cancel();
|
||||
return Task.CompletedTask;
|
||||
};
|
||||
|
||||
await connection.StartAsync();
|
||||
|
||||
|
|
|
|||
|
|
@ -33,13 +33,13 @@ namespace Microsoft.AspNetCore.SignalR.Client
|
|||
|
||||
private int _nextId = 0;
|
||||
|
||||
public event Action Connected
|
||||
public event Func<Task> Connected
|
||||
{
|
||||
add { _connection.Connected += value; }
|
||||
remove { _connection.Connected -= value; }
|
||||
}
|
||||
|
||||
public event Action<Exception> Closed
|
||||
public event Func<Exception, Task> Closed
|
||||
{
|
||||
add { _connection.Closed += value; }
|
||||
remove { _connection.Closed -= value; }
|
||||
|
|
@ -214,7 +214,7 @@ namespace Microsoft.AspNetCore.SignalR.Client
|
|||
}
|
||||
}
|
||||
|
||||
private void Shutdown(Exception ex = null)
|
||||
private Task Shutdown(Exception ex = null)
|
||||
{
|
||||
_logger.LogTrace("Shutting down connection");
|
||||
if (ex != null)
|
||||
|
|
@ -240,6 +240,7 @@ namespace Microsoft.AspNetCore.SignalR.Client
|
|||
}
|
||||
_pendingCalls.Clear();
|
||||
}
|
||||
return Task.CompletedTask;
|
||||
}
|
||||
|
||||
private Task DispatchInvocationAsync(InvocationMessage invocation, CancellationToken cancellationToken)
|
||||
|
|
|
|||
|
|
@ -13,8 +13,8 @@ namespace Microsoft.AspNetCore.Sockets.Client
|
|||
Task SendAsync(byte[] data, CancellationToken cancellationToken);
|
||||
Task DisposeAsync();
|
||||
|
||||
event Action Connected;
|
||||
event Func<Task> Connected;
|
||||
event Func<byte[], Task> Received;
|
||||
event Action<Exception> Closed;
|
||||
event Func<Exception, Task> Closed;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -34,9 +34,9 @@ namespace Microsoft.AspNetCore.Sockets.Client
|
|||
|
||||
public Uri Url { get; }
|
||||
|
||||
public event Action Connected;
|
||||
public event Func<Task> Connected;
|
||||
public event Func<byte[], Task> Received;
|
||||
public event Action<Exception> Closed;
|
||||
public event Func<Exception, Task> Closed;
|
||||
|
||||
public HttpConnection(Uri url)
|
||||
: this(url, TransportType.All)
|
||||
|
|
|
|||
|
|
@ -210,7 +210,11 @@ namespace Microsoft.AspNetCore.Sockets.Client.Tests
|
|||
try
|
||||
{
|
||||
var connectedEventRaisedTcs = new TaskCompletionSource<object>();
|
||||
connection.Connected += () => connectedEventRaisedTcs.SetResult(null);
|
||||
connection.Connected += () =>
|
||||
{
|
||||
connectedEventRaisedTcs.SetResult(null);
|
||||
return Task.CompletedTask;
|
||||
};
|
||||
|
||||
await connection.StartAsync();
|
||||
|
||||
|
|
@ -246,7 +250,11 @@ namespace Microsoft.AspNetCore.Sockets.Client.Tests
|
|||
|
||||
try
|
||||
{
|
||||
connection.Connected += () => connectedEventRaised = true;
|
||||
connection.Connected += () =>
|
||||
{
|
||||
connectedEventRaised = true;
|
||||
return Task.CompletedTask;
|
||||
};
|
||||
|
||||
await Assert.ThrowsAsync<InvalidOperationException>(
|
||||
async () => await connection.StartAsync());
|
||||
|
|
@ -277,7 +285,11 @@ namespace Microsoft.AspNetCore.Sockets.Client.Tests
|
|||
var connection = new HttpConnection(new Uri("http://fakeuri.org/"), TransportType.LongPolling, loggerFactory: null, httpMessageHandler: mockHttpHandler.Object);
|
||||
|
||||
var closedEventTcs = new TaskCompletionSource<Exception>();
|
||||
connection.Closed += e => closedEventTcs.SetResult(e);
|
||||
connection.Closed += e =>
|
||||
{
|
||||
closedEventTcs.SetResult(e);
|
||||
return Task.CompletedTask;
|
||||
};
|
||||
|
||||
await connection.StartAsync();
|
||||
await connection.DisposeAsync();
|
||||
|
|
@ -305,7 +317,11 @@ namespace Microsoft.AspNetCore.Sockets.Client.Tests
|
|||
|
||||
var connection = new HttpConnection(new Uri("http://fakeuri.org/"), TransportType.LongPolling, loggerFactory: null, httpMessageHandler: mockHttpHandler.Object);
|
||||
var closedEventTcs = new TaskCompletionSource<Exception>();
|
||||
connection.Closed += e => closedEventTcs.TrySetResult(e);
|
||||
connection.Closed += e =>
|
||||
{
|
||||
closedEventTcs.TrySetResult(e);
|
||||
return Task.CompletedTask;
|
||||
};
|
||||
|
||||
try
|
||||
{
|
||||
|
|
@ -426,7 +442,11 @@ namespace Microsoft.AspNetCore.Sockets.Client.Tests
|
|||
var connection = new HttpConnection(new Uri("http://fakeuri.org/"));
|
||||
|
||||
bool closedEventRaised = false;
|
||||
connection.Closed += e => closedEventRaised = true;
|
||||
connection.Closed += e =>
|
||||
{
|
||||
closedEventRaised = true;
|
||||
return Task.CompletedTask;
|
||||
};
|
||||
|
||||
await connection.DisposeAsync();
|
||||
Assert.False(closedEventRaised);
|
||||
|
|
@ -615,6 +635,7 @@ namespace Microsoft.AspNetCore.Sockets.Client.Tests
|
|||
{
|
||||
receiveTcs.TrySetCanceled();
|
||||
}
|
||||
return Task.CompletedTask;
|
||||
};
|
||||
|
||||
await connection.StartAsync();
|
||||
|
|
@ -648,7 +669,11 @@ namespace Microsoft.AspNetCore.Sockets.Client.Tests
|
|||
try
|
||||
{
|
||||
var closeTcs = new TaskCompletionSource<Exception>();
|
||||
connection.Closed += e => closeTcs.TrySetResult(e);
|
||||
connection.Closed += e =>
|
||||
{
|
||||
closeTcs.TrySetResult(e);
|
||||
return Task.CompletedTask;
|
||||
};
|
||||
|
||||
await connection.StartAsync();
|
||||
|
||||
|
|
|
|||
|
|
@ -138,6 +138,7 @@ namespace Microsoft.AspNetCore.SignalR.Client.Tests
|
|||
{
|
||||
closeTcs.TrySetException(e);
|
||||
}
|
||||
return Task.CompletedTask;
|
||||
};
|
||||
|
||||
try
|
||||
|
|
@ -180,6 +181,7 @@ namespace Microsoft.AspNetCore.SignalR.Client.Tests
|
|||
{
|
||||
closeTcs.TrySetException(e);
|
||||
}
|
||||
return Task.CompletedTask;
|
||||
};
|
||||
|
||||
try
|
||||
|
|
|
|||
|
|
@ -60,7 +60,11 @@ namespace Microsoft.AspNetCore.SignalR.Client.Tests
|
|||
try
|
||||
{
|
||||
var connectedEventRaisedTcs = new TaskCompletionSource<object>();
|
||||
hubConnection.Connected += () => connectedEventRaisedTcs.SetResult(null);
|
||||
hubConnection.Connected += () =>
|
||||
{
|
||||
connectedEventRaisedTcs.SetResult(null);
|
||||
return Task.CompletedTask;
|
||||
};
|
||||
|
||||
await hubConnection.StartAsync();
|
||||
|
||||
|
|
@ -77,7 +81,11 @@ namespace Microsoft.AspNetCore.SignalR.Client.Tests
|
|||
{
|
||||
var hubConnection = new HubConnection(new TestConnection());
|
||||
var closedEventTcs = new TaskCompletionSource<Exception>();
|
||||
hubConnection.Closed += e => closedEventTcs.SetResult(e);
|
||||
hubConnection.Closed += e =>
|
||||
{
|
||||
closedEventTcs.SetResult(e);
|
||||
return Task.CompletedTask;
|
||||
};
|
||||
|
||||
await hubConnection.StartAsync();
|
||||
await hubConnection.DisposeAsync();
|
||||
|
|
|
|||
|
|
@ -25,9 +25,9 @@ namespace Microsoft.AspNetCore.SignalR.Client.Tests
|
|||
private CancellationTokenSource _receiveShutdownToken = new CancellationTokenSource();
|
||||
private Task _receiveLoop;
|
||||
|
||||
public event Action Connected;
|
||||
public event Func<Task> Connected;
|
||||
public event Func<byte[], Task> Received;
|
||||
public event Action<Exception> Closed;
|
||||
public event Func<Exception, Task> Closed;
|
||||
|
||||
public Task Started => _started.Task;
|
||||
public Task Disposed => _disposed.Task;
|
||||
|
|
|
|||
|
|
@ -111,6 +111,7 @@ namespace Microsoft.AspNetCore.SignalR.Tests
|
|||
receiveTcs.TrySetResult(null);
|
||||
closeTcs.TrySetResult(null);
|
||||
}
|
||||
return Task.CompletedTask;
|
||||
};
|
||||
|
||||
logger.LogInformation("Starting connection to {url}", url);
|
||||
|
|
@ -231,6 +232,7 @@ namespace Microsoft.AspNetCore.SignalR.Tests
|
|||
{
|
||||
closeTcs.TrySetResult(null);
|
||||
}
|
||||
return Task.CompletedTask;
|
||||
};
|
||||
|
||||
logger.LogInformation("Starting connection to {url}", url);
|
||||
|
|
|
|||
Loading…
Reference in New Issue