Beispiel #1
0
        internal void Shutdown()
        {
            _socket?.Remove();

            var count = 2;

            if (_connectionThread != null)
            {
                _state = ConnectionState.Terminating;
                while (count-- > 0 && _state == ConnectionState.Terminating)
                {
                    Thread.Sleep(10);
                }

                if (_state != ConnectionState.Terminated)
                {
                    _connectionThread.Abort();
                    _connectionThread = null;
                    _state            = ConnectionState.Terminated;
                }
            }

            _manager.RemoveConnection(this);
            _socket = null;
        }
        public void Shutdown()
        {
            if (_mode == ManagerMode.NotDefined)
            {
                return;
            }
            _mode = ManagerMode.NotDefined;
            _listenSocket?.Remove();

            var conns = AllConnections;

            foreach (var conn in conns)
            {
                conn.Shutdown();
            }
        }
Beispiel #3
0
        private void ConnectionThread()
        {
            while (_state != ConnectionState.Terminating)
            {
                ProcessConnection();
                OnThreadTick();
                Thread.Sleep(10);
            }

            OnDisconnected();

            _socket.Remove();
            _socket.Received        -= ReceiveDataHandler;
            _socket.Disconnected    -= SocketDisconnectHandler;
            _socket.SocketError     -= SocketNativeErrorHandler;
            _socket.ConnectionError -= SocketErrorHandler;

            _receiveQueue.Clear();
            _manager.RemoveConnection(this);
            _state = ConnectionState.Terminated;
        }
        public ConnectionResult InitServer(string bindAddress, uint listenPort)
        {
            if (_mode != ManagerMode.NotDefined)
            {
                return(ConnectionResult.AlreadyInitialized);
            }

            _listenSocket = new SocketWrapper();
            var res = _listenSocket.Init();

            if (res != SocketResultCode.OK)
            {
                _listenSocket = null;
                return(Converter.SockResToConnRes(res));
            }

            _mode = ManagerMode.Server;
            _listenSocket.Connected       += OnListenSocketConnected;
            _listenSocket.ConnectionError += OnListenSocketConnectionError;

            res = _listenSocket.StartListen(bindAddress, (int)listenPort);
            if (res != SocketResultCode.OK)
            {
                if (res == SocketResultCode.BindFailed || res == SocketResultCode.ListenFailed)
                {
                    res = _listenSocket.LastSocketError;
                }
                _listenSocket.Remove();
                _listenSocket = null;
                return(Converter.SockResToConnRes(res));
            }

            _serverAddress = bindAddress;
            _serverPort    = listenPort;
            return(ConnectionResult.OK);
        }