예제 #1
0
 private void TransitStatus(SCPChannelStatus newStatus)
 {
     _channelStatus = newStatus;
     Monitor.PulseAll(StatusChangeNotifier);
     if (_statusChangeHandler != null)
     {
         _statusChangeHandler(newStatus);
     }
 }
예제 #2
0
 private void TransitStatus(SCPChannelStatus newStatus)
 {
     lock (_statusSync) {
         _channelStatus = newStatus;
         Monitor.PulseAll(_statusSync);
     }
     if (_statusChangeHandler != null)
     {
         _statusChangeHandler(newStatus);
     }
 }
예제 #3
0
 public bool WaitStatus(SCPChannelStatus status, int millisecondsTimeout)
 {
     lock (_statusSync) {
         while (_channelStatus != status)
         {
             bool acquired = Monitor.Wait(_statusSync, millisecondsTimeout);
             if (!acquired)
             {
                 return(false);
             }
         }
         return(true);
     }
 }
예제 #4
0
 private void OnChannelStatusChanged(SCPChannelStatus newStatus)
 {
     if (newStatus == SCPChannelStatus.CLOSED)
     {
         lock (_statusSync) {
             _status = StreamStatus.Closed;
         }
         lock (_bufferSync) {
             Monitor.PulseAll(_bufferSync);
         }
     }
     else if (newStatus == SCPChannelStatus.ERROR)
     {
         lock (_statusSync) {
             _status = StreamStatus.Error;
         }
         lock (_bufferSync) {
             Monitor.PulseAll(_bufferSync);
         }
     }
 }
예제 #5
0
 private void TransitStatus(SCPChannelStatus newStatus)
 {
     _channelStatus = newStatus;
     Monitor.PulseAll(StatusChangeNotifier);
     if (_statusChangeHandler != null)
         _statusChangeHandler(newStatus);
 }
예제 #6
0
 private void OnChannelStatusChanged(SCPChannelStatus newStatus)
 {
     if (newStatus == SCPChannelStatus.CLOSED) {
         lock (_statusSync) {
             _status = StreamStatus.Closed;
         }
         lock (_bufferSync) {
             Monitor.PulseAll(_bufferSync);
         }
     }
     else if (newStatus == SCPChannelStatus.ERROR) {
         lock (_statusSync) {
             _status = StreamStatus.Error;
         }
         lock (_bufferSync) {
             Monitor.PulseAll(_bufferSync);
         }
     }
 }
예제 #7
0
 private void TransitStatus(SCPChannelStatus newStatus)
 {
     lock (_statusSync) {
         _channelStatus = newStatus;
         Monitor.PulseAll(_statusSync);
     }
     if (_statusChangeHandler != null) {
         _statusChangeHandler(newStatus);
     }
 }
예제 #8
0
 public bool WaitStatus(SCPChannelStatus status, int millisecondsTimeout)
 {
     lock (_statusSync) {
         while (_channelStatus != status) {
             bool acquired = Monitor.Wait(_statusSync, millisecondsTimeout);
             if (!acquired) {
                 return false;
             }
         }
         return true;
     }
 }