public static void Complete <T>(this ITerminatableWritableChannel <T> channel) { if (!channel.TryComplete()) { throw new OperationCanceledException(); } }
private static async Task PropagateAsync(IReadableChannel <TransportMessageFrame> channel1, ITerminatableWritableChannel <TransportMessageFrame> channel2) { try { while (true) { var result = await channel1.TryReadAsync().ConfigureAwait(false); if (!result.HasValue) { break; } await channel2.WriteAsync(result.Value).ConfigureAwait(false); } channel2.TryComplete(); } catch (Exception ex) { channel2.TryTerminate(ex); } }
public static async Task CompleteAsync <T>(this ITerminatableWritableChannel <T> channel) { channel.TryComplete(); await channel.Completion.ConfigureAwait(false); }