Beispiel #1
0
 internal virtual void Process(ClosePipeCommand command)
 {
     throw new NotImplementedException();
 }
Beispiel #2
0
 public static void SendClosePipe(Pipe destination)
 {
     var command = new ClosePipeCommand(destination);
     SendCommand(command);
 }
Beispiel #3
0
 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();
     }
 }