public IPooledBuffer Handle(ITransportConnectionCloseHeader header, Nothing _) { using (var headerProto = Header.Rent()) using (var closeProto = ConnectionCloseHeader.Rent()) { headerProto.Close = MergeToProto(closeProto, header); return(headerProto.Serialize()); } }
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); } }
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(_); }
private static ConnectionCloseHeader MergeToProto(ConnectionCloseHeader proto, ITransportConnectionCloseHeader messageHeader) { proto = proto ?? new ConnectionCloseHeader(); proto.Completion = proto.Completion.MergeFrom(messageHeader.Completion); return(proto); }
public T Handle(ITransportConnectionCloseHeader header, TArgs args) { return(_closeHandler(header, args)); }