Example #1
0
 public IPooledBuffer Handle(ITransportConnectionCloseHeader header, Nothing _)
 {
     using (var headerProto = Header.Rent())
         using (var closeProto = ConnectionCloseHeader.Rent())
         {
             headerProto.Close = MergeToProto(closeProto, header);
             return(headerProto.Serialize());
         }
 }
Example #2
0
        private void ThrowIfTermination(ITransportConnectionCloseHeader header)
        {
            switch (header.Completion.Status)
            {
            case CompletionStatusHeader.Canceled:
                throw new OperationCanceledException();

            case CompletionStatusHeader.Failed:
                var error = header.Completion.Error.Value;
                throw new RemoteErrorException(error);
            }
        }
Example #3
0
        private Nothing Handle(ITransportConnectionCloseHeader header, Nothing _)
        {
            switch (_state)
            {
            case State.NotConnected:
            case State.Connected:
                _state = State.Disconnected;
                ThrowIfTermination(header);
                break;

            default:
                throw new ProtocolException($"Received unexpected header of type {header.GetType()} in state {_state}");
            }
            return(_);
        }
Example #4
0
 private static ConnectionCloseHeader MergeToProto(ConnectionCloseHeader proto, ITransportConnectionCloseHeader messageHeader)
 {
     proto            = proto ?? new ConnectionCloseHeader();
     proto.Completion = proto.Completion.MergeFrom(messageHeader.Completion);
     return(proto);
 }
Example #5
0
 public T Handle(ITransportConnectionCloseHeader header, TArgs args)
 {
     return(_closeHandler(header, args));
 }