Пример #1
0
        public static async Task WriteAsync <T>(this IWriteOnlyChannel <T> channel, T item)
        {
            var result = await channel.TryWriteAsync(item).ConfigureAwait(false);

            if (!result)
            {
                await channel.Completion.ConfigureAwait(false);

                throw new OperationCanceledException();
            }
        }
Пример #2
0
        private async Task ListenAsync(IWriteOnlyChannel <ITransportChannel> output, CancellationToken cancellationToken)
        {
            while (true)
            {
                var result = await _connection.IncomingChannels.TryReadAsync().ConfigureAwait(false);

                if (!result.HasValue)
                {
                    break;
                }
                var channel = result.Value;
                _log.Trace("New invocation received: {0}", channel.Id);
                if (!await output.TryWriteAsync(channel).ConfigureAwait(false))
                {
                    channel.Out.TryTerminate();
                    break;
                }
            }
        }