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); }
public IPooledBuffer Handle(ITransportChannelCloseHeader header, Nothing _) { using (var headerProto = Header.Rent()) using (var channelCloseProto = ChannelCloseHeader.Rent()) { headerProto.ChannelClose = MergeToProto(channelCloseProto, header); return(headerProto.Serialize()); } }
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); }