/// <summary> /// Disconnect from the remote host. /// </summary> /// <param name="reason">The given reason for the disconnection</param> public void Disconnect(string reason) { if (!IsConnected || _closing) { return; } _closing = true; // -- Wait for everything in send buffer to clear?? while (_sending) { Thread.Sleep(1); } _sendBuffer = new ConcurrentQueue <byte[]>(); // -- Reset everything _readBuffer = new byte[ReadSize]; _baseStream.Close(); // -- Close our the stream and socket (Forces all async operations to fail over as well) _baseSocket.Close(); IsConnected = false; // -- Flag any users that we are no longer connected. // -- Call the disconnected event. if (Disconnected != null) { Disconnected.SafeRaise(new SocketDisconnectedArgs(this, reason)); } _closing = false; // -- Done closing our connection }
private void ConnectComplete(IAsyncResult ar) { try { _baseSocket.EndConnect(ar); // -- End the connection event.. IsConnected = true; // -- Flag the system as connected _baseStream = _baseSocket.GetStream(); _baseStream.BeginRead(_readBuffer, 0, ReadSize, ReadComplete, null); // -- Begin reading data if (Connected != null) { Connected.SafeRaise(new SocketConnectedArgs(this)); } // Task.Run(() => Connected(new SocketConnectedArgs(this))); // -- Trigger the socket connected event. } catch (Exception e) { if (Disconnected != null) { Disconnected.SafeRaise(new SocketDisconnectedArgs(this, "Unable Connect to server")); } } }
/// <summary> /// Disconnect from the remote host. /// </summary> /// <param name="reason">The given reason for the disconnection</param> public void Disconnect(string reason) { if (!IsConnected || _closing) { return; } _closing = true; var counter = 2000; //// -- Wait for everything in send buffer to clear?? while (_sending) { //Console.WriteLin("[RAW SOCKET] - WAITING FOR SEND"); counter -= 1; if (counter <= 0) { break; } Thread.Sleep(1); } _sendBuffer = new ConcurrentQueue <byte[]>(); // -- Reset everything _readBuffer = new byte[ReadSize]; _baseStream.Close(); // -- Close our the stream and socket (Forces all async operations to fail over as well) _baseSocket.Close(); IsConnected = false; // -- Flag any users that we are no longer connected. // -- Call the disconnected event. Disconnected?.SafeRaise(new SocketDisconnectedArgs(this, reason)); _closing = false; // -- Done closing our connection }
private void OnDisconnect(NetworkMessage msg) { Disconnected.SafeRaise(msg.conn.connectionId); }
private void OnDisconnect(NetworkMessage msg) { Disconnected.SafeRaise(); }