Exemplo n.º 1
0
 private static MessageFrameHeader MergeToProto(MessageFrameHeader proto, ITransportFrameHeader frameMessageHeader)
 {
     proto           = proto ?? new MessageFrameHeader();
     proto.ChannelId = proto.ChannelId.MergeFrom(frameMessageHeader.ChannelId);
     proto.Length    = (uint)frameMessageHeader.Length;
     proto.HasMore   = frameMessageHeader.HasMore;
     return(proto);
 }
Exemplo n.º 2
0
 public IPooledBuffer Handle(ITransportFrameHeader header, Nothing _)
 {
     using (var headerProto = Header.Rent())
         using (var frameProto = MessageFrameHeader.Rent())
         {
             headerProto.MessageFrame = MergeToProto(frameProto, header);
             return(headerProto.Serialize());
         }
 }
Exemplo n.º 3
0
 private async Task HandleIncomingAsync(ITransportFrameHeader 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}", message);
         message.Dispose();
     }
 }
Exemplo n.º 4
0
 private async Task HandleIncomingAsync(ITransportFrameHeader header, ChannelMessage message)
 {
     if (!await _receiveBuffer.Out
         .TryWriteSafeAsync(new TransportMessageFrame(message.Payload.Value, header.HasMore))
         .ConfigureAwait(false))
     {
         _log.Trace("Skipping message because the channel is terminated: {0}", message);
         if (message.Payload.HasValue)
         {
             message.Payload.Value.Dispose();
         }
     }
 }
Exemplo n.º 5
0
 private async Task HandleIncomingAsync(ITransportFrameHeader header, ChannelMessage message)
 {
     try
     {
         await _receiveBuffer.Out.WriteAsync(new TransportMessageFrame(message.Payload.Value, header.HasMore));
     }
     catch
     {
         if (message.Payload.HasValue)
         {
             message.Payload.Value.Dispose();
         }
         throw;
     }
 }
Exemplo n.º 6
0
 public FrameMessage(ITransportFrameHeader header, IPooledBuffer payload)
 {
     Header  = header;
     Payload = payload;
 }
 public T Handle(ITransportFrameHeader header, TArgs args)
 {
     return(_frameHandler(header, args));
 }
Exemplo n.º 8
0
 public Maybe <int> Handle(ITransportFrameHeader header, Nothing _)
 {
     return(header.Length);
 }