コード例 #1
0
 public static Completion MergeFrom(this Completion proto, CompletionHeader message)
 {
     proto        = proto ?? new Completion();
     proto.Status = ConvertToProto(message.Status);
     proto.Error  = message.Error.HasValue ? MergeFrom(proto.Error, message.Error.Value) : null;
     return(proto);
 }
コード例 #2
0
        public ITransportConnectionCloseHeader CreateConnectionCloseHeader(CompletionHeader completion)
        {
            var header = TransportConnectionCloseHeader.Rent();

            header.Completion = completion;
            return(header);
        }
コード例 #3
0
        private async Task SendCloseMessageAsync(Exception error = null)
        {
            var closeHeader = _headerFactory.CreateChannelCloseHeader(
                ChannelId,
                error == null
                    ? CompletionHeader.Completed
                    : error is OperationCanceledException
                        ? CompletionHeader.Canceled
                        : CompletionHeader.Failed(GetErrorHeader(error)));

            await SendAsync(closeHeader).ConfigureAwait(false);
        }
コード例 #4
0
        private async Task CloseConnectionAsync(Exception error, IWriteOnlyChannel <TransportMessage> output)
        {
            ITransportConnectionCloseHeader closeHeader;

            if (error is OperationCanceledException)
            {
                closeHeader = _transportHeaderFactory.CreateConnectionCloseHeader(CompletionHeader.Canceled);
            }
            else
            {
                closeHeader = _transportHeaderFactory.CreateConnectionCloseHeader(CompletionHeader.Failed(GetErrorHeader(error)));
            }
            await SendAsync(new TransportMessage(closeHeader), output).ConfigureAwait(false);
        }
コード例 #5
0
        public ITransportChannelCloseHeader CreateChannelCloseHeader(UniqueId channelId, CompletionHeader completion)
        {
            var header = TransportChannelCloseHeader.Rent();

            header.ChannelId  = channelId;
            header.Completion = completion;
            return(header);
        }
コード例 #6
0
 protected override void Cleanup()
 {
     ChannelId  = default;
     Completion = default;
 }
コード例 #7
0
 protected override void Cleanup()
 {
     Completion = default;
 }