internal virtual void Process(ClosePipeCommand command) { throw new NotImplementedException(); }
public static void SendClosePipe(Pipe destination) { var command = new ClosePipeCommand(destination); SendCommand(command); }
internal override void Process(ClosePipeCommand command) { // This is the simple case of peer-induced dispose. If there are no // more pending messages to read, or if the pipe was configured to drop // pending messages, we can move directly to the Closed state. // Otherwise we'll hang up in WaitingForDelimiter state till all // pending messages are read. if (m_state == State.Active) { if (m_delay) m_state = State.WaitingForDelimiter; else CompleteClose(); } // Delimiter happened to arrive before the close command. Now we have the // close command as well, so we can move straight to close state. else if (m_state == State.DelimiterReceived) { CompleteClose(); } }