public static async Task <bool> CloseAllConnectionsAsync(this FrameConnectionManager connectionManager, CancellationToken token) { var closeTasks = new List <Task>(); connectionManager.Walk(connection => { closeTasks.Add(connection.StopAsync()); }); var allClosedTask = Task.WhenAll(closeTasks.ToArray()); return(await Task.WhenAny(allClosedTask, CancellationTokenAsTask(token)).ConfigureAwait(false) == allClosedTask); }
public static async Task <bool> AbortAllConnectionsAsync(this FrameConnectionManager connectionManager) { var abortTasks = new List <Task>(); var canceledException = new ConnectionAbortedException(); connectionManager.Walk(connection => { abortTasks.Add(connection.AbortAsync(canceledException)); }); var allAbortedTask = Task.WhenAll(abortTasks.ToArray()); return(await Task.WhenAny(allAbortedTask, Task.Delay(1000)).ConfigureAwait(false) == allAbortedTask); }
public void OnHeartbeat(DateTimeOffset now) { _now = now; _connectionManager.Walk(_walkCallback); }