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(); } }
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); }