예제 #1
0
        public void Stop()
        {
            StateBase prevState = State;

            State = new DisconnectedState();
            prevState.Signal();
        }
예제 #2
0
        public void Disconnect()
        {
            if (State == null)
            {
                State = new DisconnectedState();
            }

            State.Disconnected(this);
        }
예제 #3
0
 public Server(OnStateChanged onStateChanged)
 {
     _running         = true;
     _onStateChanged  = onStateChanged;
     _state           = new StateBase();
     _newState        = new DisconnectedState();
     _newState.Server = this;
     _serverThread    = new Thread(this.Run);
     _serverThread.SetApartmentState(System.Threading.ApartmentState.STA);
     _serverThread.Start();
 }
예제 #4
0
        private Connection()
        {
            var socket = new CustomSocket();

            IConnection connected    = new ConnectedState <IConnection>(this, this, socket);
            IConnection disconnected = new DisconnectedState <IConnection>(this, this, socket);
            IConnection error        = new ErrorState <IConnection>(this, this, socket);

            AddTransition(connected, ConnectedState <IConnection> .DISCONNECT, disconnected);
            AddTransition(connected, ConnectedState <IConnection> .ERROR, error);

            AddTransition(disconnected, DisconnectedState <IConnection> .CONNECT, connected);
            AddTransition(disconnected, DisconnectedState <IConnection> .ERROR, error);

            AddTransition(error, ErrorState <IConnection> .CONNECT, connected);
            AddTransition(error, ErrorState <IConnection> .DISCONNECT, disconnected);

            CurrentState = disconnected;
        }