예제 #1
0
 public static void Complete <T>(this ITerminatableWritableChannel <T> channel)
 {
     if (!channel.TryComplete())
     {
         throw new OperationCanceledException();
     }
 }
예제 #2
0
        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);
            }
        }
예제 #3
0
 public static async Task CompleteAsync <T>(this ITerminatableWritableChannel <T> channel)
 {
     channel.TryComplete();
     await channel.Completion.ConfigureAwait(false);
 }