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;
            }
        }
Пример #2
0
        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;
            }
        }
Пример #3
0
 private void OnDisconnect(BattlEyeLoginCredentials loginDetails, EBattlEyeDisconnectionType disconnectionType)
 {
     if (DisconnectEvent != null)
     {
         DisconnectEvent(new BattlEyeDisconnectEventArgs(loginDetails, disconnectionType));
     }
 }
Пример #4
0
        private void Disconnect(EBattlEyeDisconnectionType disconnectionType)
        {
            _keepRunning       = false;
            _disconnectionType = disconnectionType;

            if (_socket.Connected)
            {
                _socket.Shutdown(SocketShutdown.Both);
                _socket.Close();
            }
        }
Пример #5
0
        public void Disconnect()
        {
            _keepRunning       = false;
            _disconnectionType = EBattlEyeDisconnectionType.Manual;

            if (_socket.Connected)
            {
                _socket.Shutdown(SocketShutdown.Both);
                _socket.Close();
            }

            OnDisconnect(_loginCredentials, _disconnectionType);
        }
Пример #6
0
 private void OnDisconnect(BattlEyeLoginCredentials loginDetails, EBattlEyeDisconnectionType disconnectionType)
 {
     if (DisconnectEvent != null)
         DisconnectEvent(new BattlEyeDisconnectEventArgs(loginDetails, disconnectionType));
 }
Пример #7
0
        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);
        }
Пример #8
0
        private void Disconnect(EBattlEyeDisconnectionType disconnectionType)
        {
            _keepRunning = false;
            _disconnectionType = disconnectionType;

            if (_socket.Connected)
            {
                _socket.Shutdown(SocketShutdown.Both);
                _socket.Close();
            }
        }
Пример #9
0
        public void Disconnect()
        {
            _keepRunning = false;
            _disconnectionType = EBattlEyeDisconnectionType.Manual;

            if (_socket.Connected)
            {
                _socket.Shutdown(SocketShutdown.Both);
                _socket.Close();
            }

            OnDisconnect(_loginCredentials, _disconnectionType);
        }
Пример #10
0
        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);
            }
        }
Пример #11
0
        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);
        }
Пример #12
0
        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);
                }
            }
        }
Пример #13
0
        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);
            }
        }