protected virtual async Task FinishAsync(IClientChannel clientChannel, CancellationToken cancellationToken) { var receivedFinishedSessionTask = clientChannel.ReceiveFinishedSessionAsync(cancellationToken); await clientChannel.SendFinishingSessionAsync(cancellationToken).ConfigureAwait(false); await receivedFinishedSessionTask.ConfigureAwait(false); }
public override async Task OnWindowClosingAsync() { if (_clientChannel != null) { if (_clientChannel.State == SessionState.Established) { await _clientChannel.SendFinishingSessionAsync(); var session = await _clientChannel.ReceiveFinishedSessionAsync(_receiveTimeout.ToCancellationToken()); } _clientChannel.DisposeIfDisposable(); } }
private async Task ListenSessionAsync() { await _clientChannel.ReceiveFinishedSessionAsync(_cancellationTokenSource.Token); }
/// <summary> /// Performs the session finishing handshake. /// </summary> public static async Task<Session> FinishSessionAsync(this IClientChannel clientChannel, CancellationToken cancellationToken) { var finishedTask = clientChannel.ReceiveFinishedSessionAsync(cancellationToken); await clientChannel.SendFinishingSessionAsync(cancellationToken).ConfigureAwait(false); return await finishedTask.ConfigureAwait(false); }