Exemplo n.º 1
0
        public void SetToWriteMode()
        {
            if (_mode == TcpReaderSwitchMode.Stopped)
            {
                throw new Exception("Service is stopping");
            }

            lock (_lockObject)
            {
                if (_mode == TcpReaderSwitchMode.Write)
                {
                    return;
                }

                _mode = TcpReaderSwitchMode.Write;

                if (_writeModeAwaiter == null)
                {
                    return;
                }

                var result = _writeModeAwaiter;
                _writeModeAwaiter = null;
                result.SetResult(0);
            }
        }
Exemplo n.º 2
0
        public void Stop()
        {
            lock (_lockObject)
            {
                _mode = TcpReaderSwitchMode.Stopped;
                if (_readModeAwaiter != null)
                {
                    var readModeAwaiter = _readModeAwaiter;
                    _readModeAwaiter = null;
                    readModeAwaiter.SetException(new Exception("We are stopping"));
                }

                if (_writeModeAwaiter != null)
                {
                    var writeModeAwaiter = _writeModeAwaiter;
                    _writeModeAwaiter = null;
                    writeModeAwaiter.SetException(new Exception("We are stopping"));
                }
            }
        }