Beispiel #1
0
 private static ChannelCloseHeader MergeToProto(ChannelCloseHeader proto, ITransportChannelCloseHeader messageHeader)
 {
     proto            = proto ?? new ChannelCloseHeader();
     proto.ChannelId  = proto.ChannelId.MergeFrom(messageHeader.ChannelId);
     proto.Completion = proto.Completion.MergeFrom(messageHeader.Completion);
     return(proto);
 }
Beispiel #2
0
 public IPooledBuffer Handle(ITransportChannelCloseHeader header, Nothing _)
 {
     using (var headerProto = Header.Rent())
         using (var channelCloseProto = ChannelCloseHeader.Rent())
         {
             headerProto.ChannelClose = MergeToProto(channelCloseProto, header);
             return(headerProto.Serialize());
         }
 }
Beispiel #3
0
 private async Task HandleIncomingAsync(ITransportChannelCloseHeader header, ChannelMessage message)
 {
     if (_channels.TryGetValue(header.ChannelId, out var channel))
     {
         await channel.HandleIncomingAsync(message).ConfigureAwait(false);
     }
     else
     {
         _log.Trace("Skipping message because the specified channel not found: {0}", header);
         message.Dispose();
     }
 }
 private Task HandleIncomingAsync(ITransportChannelCloseHeader header, ChannelMessage message)
 {
     switch (header.Completion.Status)
     {
         case CompletionStatusHeader.Completed:
             _receiveBuffer.Out.TryComplete();
             break;
         case CompletionStatusHeader.Canceled:
             _sendProcessor.Out.TryTerminate();
             _receiveBuffer.Out.TryTerminate();
             break;
         case CompletionStatusHeader.Failed:
             var error = header.Completion.Error.Value;
             _sendProcessor.Out.TryTerminate();
             _receiveBuffer.Out.TryTerminate(new RemoteErrorException(error));
             break;
         default:
             throw new InvalidOperationException();
     }
     return TaskConstants.Completed;
 }
 public T Handle(ITransportChannelCloseHeader header, TArgs args)
 {
     return(_closeHandler(header, args));
 }
 public Maybe <int> Handle(ITransportChannelCloseHeader header, Nothing _)
 {
     return(Nothing.Instance);
 }