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); }
public IPooledBuffer Handle(ITransportFrameHeader header, Nothing _) { using (var headerProto = Header.Rent()) using (var frameProto = MessageFrameHeader.Rent()) { headerProto.MessageFrame = MergeToProto(frameProto, header); return(headerProto.Serialize()); } }
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(); } }
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(); } } }
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; } }
public FrameMessage(ITransportFrameHeader header, IPooledBuffer payload) { Header = header; Payload = payload; }
public T Handle(ITransportFrameHeader header, TArgs args) { return(_frameHandler(header, args)); }
public Maybe <int> Handle(ITransportFrameHeader header, Nothing _) { return(header.Length); }