示例#1
0
 public ChannelMessage(ITransportChannelHeader header, Maybe <IPooledBuffer> payload)
 {
     if (payload.HasValue && payload.Value == null)
     {
         throw new ArgumentException(nameof(payload));
     }
     Header  = header;
     Payload = payload;
 }
示例#2
0
        private Nothing Handle(ITransportChannelHeader header, Nothing _)
        {
            switch (_state)
            {
            case State.Connected:
                break;

            default:
                throw new ProtocolException($"Received unexpected header of type {header.GetType()} in state {_state}");
            }
            return(_);
        }
        private async Task HandleChannelHeaderAsync(ITransportChannelHeader header, Maybe <IPooledBuffer> payload)
        {
            var message = new ChannelMessage(header, payload);

            try
            {
                await _buffer.Out.WriteAsync(message).ConfigureAwait(false);
            }
            catch
            {
                message.Dispose();
                throw;
            }
        }
 private async Task SendAsync(ITransportChannelHeader header, Maybe <IPooledBuffer> body = default)
 {
     try
     {
         _log.Trace("Sending: {0} with body {1}", header, body);
         await _out.WriteAsync(new ChannelMessage(header, body)).ConfigureAwait(false);
     }
     catch
     {
         header.Dispose();
         if (body.HasValue)
         {
             body.Value.Dispose();
         }
         throw;
     }
 }
 private Task SendAsync(ITransportChannelHeader header, IPooledBuffer body) => SendAsync(header, new Maybe <IPooledBuffer>(body));
示例#6
0
 public IPooledBuffer Handle(ITransportChannelHeader header, Nothing _)
 {
     return(header.Handle(_channelHeaderHandler));
 }
示例#7
0
 public ChannelMessage(ITransportChannelHeader header, IPooledBuffer payload)
     : this(header, new Maybe <IPooledBuffer>(payload))
 {
 }
示例#8
0
 public ChannelMessage(ITransportChannelHeader header)
     : this(header, Maybe <IPooledBuffer> .Nothing)
 {
 }
示例#9
0
 public T Handle(ITransportChannelHeader header, TArgs args)
 {
     return(_handleChannelHeader(header, args));
 }
 public Maybe <int> Handle(ITransportChannelHeader header, Nothing _)
 {
     return(header.Handle(new TransportChannelHeaderHandler <Maybe <int>, Nothing>(this), _));
 }
示例#11
0
 public ChannelMessage(ITransportChannelHeader header, Maybe <IPooledBuffer> payload)
 {
     Header  = header;
     Payload = payload;
 }