public BattlEyeDisconnectEventArgs(BattlEyeLoginCredentials loginDetails, EBattlEyeDisconnectionType disconnectionType) { LoginDetails = loginDetails; DisconnectionType = disconnectionType; switch (DisconnectionType) { case EBattlEyeDisconnectionType.ConnectionLost: Message = "Disconnected! (Connection timeout)"; break; case EBattlEyeDisconnectionType.LoginFailed: Message = "Disconnected! (Failed to login)"; break; case EBattlEyeDisconnectionType.Manual: Message = "Disconnected!"; break; case EBattlEyeDisconnectionType.SocketException: Message = "Disconnected! (Socket Exception)"; break; case EBattlEyeDisconnectionType.ConnectionFailed: Message = "Connection failed!"; break; } }
private void OnDisconnect(BattlEyeLoginCredentials loginDetails, EBattlEyeDisconnectionType disconnectionType) { if (DisconnectEvent != null) { DisconnectEvent(new BattlEyeDisconnectEventArgs(loginDetails, disconnectionType)); } }
private void Disconnect(EBattlEyeDisconnectionType disconnectionType) { _keepRunning = false; _disconnectionType = disconnectionType; if (_socket.Connected) { _socket.Shutdown(SocketShutdown.Both); _socket.Close(); } }
public void Disconnect() { _keepRunning = false; _disconnectionType = EBattlEyeDisconnectionType.Manual; if (_socket.Connected) { _socket.Shutdown(SocketShutdown.Both); _socket.Close(); } OnDisconnect(_loginCredentials, _disconnectionType); }
private void OnDisconnect(BattlEyeLoginCredentials loginDetails, EBattlEyeDisconnectionType disconnectionType) { if (DisconnectEvent != null) DisconnectEvent(new BattlEyeDisconnectEventArgs(loginDetails, disconnectionType)); }
private void DoWork() { var bytesReceived = new Byte[4096]; int bytes = 0; string buffer = null; int bufferCount = 0; int packetCount = 0; _disconnectionType = EBattlEyeDisconnectionType.ConnectionLost; while (_socket.Connected && _keepRunning) { try { bytes = _socket.Receive(bytesReceived, bytesReceived.Length, 0); if (bytesReceived[7] == 0x00) { if (bytesReceived[8] == 0x01) { OnMessageReceived("Logged in!"); } else { Disconnect(EBattlEyeDisconnectionType.LoginFailed); } } else if (bytesReceived[7] == 0x02) { SendAcknowledgePacket(Encoding.GetEncoding(1252).GetString(new[] { bytesReceived[8] })); OnMessageReceived(Encoding.GetEncoding(1252).GetString(bytesReceived, 9, bytes - 9)); } else if (bytesReceived[7] == 0x01) { if (bytes > 9) { if (bytesReceived[7] == 0x01 && bytesReceived[9] == 0x00) { if (bytesReceived[11] == 0) { packetCount = bytesReceived[10]; } if (bufferCount < packetCount) { buffer += Encoding.GetEncoding(1252).GetString(bytesReceived, 12, bytes - 12); bufferCount++; } if (bufferCount == packetCount) { OnMessageReceived(buffer); buffer = null; bufferCount = 0; packetCount = 0; } } else { OnMessageReceived(Encoding.GetEncoding(1252).GetString(bytesReceived, 9, bytes - 9)); } } } _responseReceived = DateTime.Now; bytesReceived = new Byte[4096]; } catch (Exception) { if (_keepRunning) { Disconnect(EBattlEyeDisconnectionType.SocketException); } } } if (!_socket.Connected) OnDisconnect(_loginCredentials, _disconnectionType); }
private void DoWork() { var bytesReceived = new Byte[4096]; int bytes = 0; string buffer = null; int bufferCount = 0; int packetCount = 0; _disconnectionType = EBattlEyeDisconnectionType.ConnectionLost; while (_socket.Connected && _keepRunning) { try { bytes = _socket.Receive(bytesReceived, bytesReceived.Length, 0); if (bytesReceived[7] == 0x02) { SendAcknowledgePacket(Helpers.Bytes2String(new[] { bytesReceived[8] })); OnMessageReceived(Helpers.Bytes2String(bytesReceived, 9, bytes - 9)); } else if (bytesReceived[7] == 0x01) { if (bytes > 9) { if (bytesReceived[7] == 0x01 && bytesReceived[9] == 0x00) { if (bytesReceived[11] == 0) { packetCount = bytesReceived[10]; } if (bufferCount < packetCount) { buffer += Helpers.Bytes2String(bytesReceived, 12, bytes - 12); bufferCount++; } if (bufferCount == packetCount) { OnMessageReceived(buffer); buffer = null; bufferCount = 0; packetCount = 0; } } else { // Temporary fix to avoid infinite loops with multi-packet server messages buffer = null; bufferCount = 0; packetCount = 0; OnMessageReceived(Helpers.Bytes2String(bytesReceived, 9, bytes - 9)); } } } _responseReceived = DateTime.Now; bytesReceived = new Byte[4096]; } catch (Exception) { if (_keepRunning) { Disconnect(EBattlEyeDisconnectionType.SocketException); } } } if (!_socket.Connected) { OnDisconnect(_loginCredentials, _disconnectionType); } }
private void DoWork() { var bytesReceived = new Byte[4096]; int bytes = 0; string buffer = null; int bufferCount = 0; int packetCount = 0; _disconnectionType = EBattlEyeDisconnectionType.ConnectionLost; while (_socket.Connected && _keepRunning) { try { bytes = _socket.Receive(bytesReceived, bytesReceived.Length, 0); if (bytesReceived[7] == 0x02) { SendAcknowledgePacket(Helpers.Bytes2String(new[] { bytesReceived[8] })); OnMessageReceived(Helpers.Bytes2String(bytesReceived, 9, bytes - 9)); } else if (bytesReceived[7] == 0x01) { if (bytes > 9) { if (bytesReceived[7] == 0x01 && bytesReceived[9] == 0x00) { if (bytesReceived[11] == 0) { packetCount = bytesReceived[10]; } if (bufferCount < packetCount) { buffer += Helpers.Bytes2String(bytesReceived, 12, bytes - 12); bufferCount++; } if (bufferCount == packetCount) { OnMessageReceived(buffer); buffer = null; bufferCount = 0; packetCount = 0; } } else { // Temporary fix to avoid infinite loops with multi-packet server messages buffer = null; bufferCount = 0; packetCount = 0; OnMessageReceived(Helpers.Bytes2String(bytesReceived, 9, bytes - 9)); } } } _responseReceived = DateTime.Now; bytesReceived = new Byte[4096]; } catch (Exception) { if (_keepRunning) { Disconnect(EBattlEyeDisconnectionType.SocketException); } } } if (!_socket.Connected) OnDisconnect(_loginCredentials, _disconnectionType); }
private void DoWork() { var bytesReceived = new Byte[4096]; int bytes = 0; string buffer = null; int bufferCount = 0; int packetCount = 0; _disconnectionType = EBattlEyeDisconnectionType.ConnectionLost; while (_socket.Connected && _keepRunning) { try { bytes = _socket.Receive(bytesReceived, bytesReceived.Length, 0); if (bytesReceived[7] == 0x02) { SendAcknowledgePacket(Helpers.Bytes2String(new[] { bytesReceived[8] })); OnMessageReceived(Helpers.Bytes2String(bytesReceived, 9, bytes - 9)); } else if (bytesReceived[7] == 0x01) { if (bytes > 9) { if (bytesReceived[7] == 0x01 && bytesReceived[9] == 0x00) { if (bytesReceived[11] == 0) { packetCount = bytesReceived[10]; } if (bufferCount < packetCount) { buffer += Helpers.Bytes2String(bytesReceived, 12, bytes - 12); bufferCount++; } if (bufferCount == packetCount) { OnMessageReceived(buffer); buffer = null; bufferCount = 0; packetCount = 0; } } else { // Temporary fix to avoid infinite loops with multi-packet server messages buffer = null; bufferCount = 0; packetCount = 0; OnMessageReceived(Helpers.Bytes2String(bytesReceived, 9, bytes - 9)); } } _packetLog.Remove(bytesReceived[8]); } _responseReceived = DateTime.Now; bytesReceived = new Byte[4096]; } catch (Exception) { TimeSpan timeoutClient = DateTime.Now - _commandSend; TimeSpan timeoutServer = DateTime.Now - _responseReceived; if (timeoutClient.TotalSeconds >= 5) { if (timeoutServer.TotalSeconds >= 20) { Disconnect(EBattlEyeDisconnectionType.ConnectionLost); _keepRunning = true; } else { if (_packetLog.Count == 0) { SendCommandPacket(null, false); } } } } if (_packetLog.Count > 0) { int key = _packetLog.First().Key; SendCommandPacket(_packetLog[key]); _packetLog.Remove(key); } } if (!_socket.Connected) { if (_reconnectOnPacketLoss && _keepRunning) { Connect(); } else if (!_keepRunning) { // let the thread finish without further action } else { OnDisconnect(_loginCredentials, _disconnectionType); } } }
private void DoWork() { var bytesReceived = new Byte[4096]; int bytes = 0; string buffer = null; int bufferCount = 0; int packetCount = 0; _disconnectionType = EBattlEyeDisconnectionType.ConnectionLost; while (_socket.Connected && _keepRunning) { try { bytes = _socket.Receive(bytesReceived, bytesReceived.Length, 0); if (bytesReceived[7] == 0x00) { if (bytesReceived[8] == 0x01) { OnMessageReceived("Logged in!"); } else { Disconnect(EBattlEyeDisconnectionType.LoginFailed); } } else if (bytesReceived[7] == 0x02) { SendAcknowledgePacket(Encoding.GetEncoding(1252).GetString(new[] { bytesReceived[8] })); OnMessageReceived(Encoding.GetEncoding(1252).GetString(bytesReceived, 9, bytes - 9)); } else if (bytesReceived[7] == 0x01) { if (bytes > 9) { if (bytesReceived[7] == 0x01 && bytesReceived[9] == 0x00) { if (bytesReceived[11] == 0) { packetCount = bytesReceived[10]; } if (bufferCount < packetCount) { buffer += Encoding.GetEncoding(1252).GetString(bytesReceived, 12, bytes - 12); bufferCount++; } if (bufferCount == packetCount) { OnMessageReceived(buffer); buffer = null; bufferCount = 0; packetCount = 0; } } else { OnMessageReceived(Encoding.GetEncoding(1252).GetString(bytesReceived, 9, bytes - 9)); } } } _responseReceived = DateTime.Now; bytesReceived = new Byte[4096]; } catch (Exception) { if (_keepRunning) { Disconnect(EBattlEyeDisconnectionType.SocketException); } } } if (!_socket.Connected) { OnDisconnect(_loginCredentials, _disconnectionType); } }