summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/Protocol/ProtocolRecognizer.cpp36
-rw-r--r--src/Protocol/ProtocolRecognizer.h20
2 files changed, 20 insertions, 36 deletions
diff --git a/src/Protocol/ProtocolRecognizer.cpp b/src/Protocol/ProtocolRecognizer.cpp
index d0f4c6f53..6ad0a095d 100644
--- a/src/Protocol/ProtocolRecognizer.cpp
+++ b/src/Protocol/ProtocolRecognizer.cpp
@@ -27,7 +27,6 @@
cProtocolRecognizer::cProtocolRecognizer(cClientHandle * a_Client) :
super(a_Client),
- m_Protocol(nullptr),
m_Buffer(8192), // We need a larger buffer to support BungeeCord - it sends one huge packet at the start
m_InPingForUnrecognizedVersion(false)
{
@@ -37,16 +36,6 @@ cProtocolRecognizer::cProtocolRecognizer(cClientHandle * a_Client) :
-cProtocolRecognizer::~cProtocolRecognizer()
-{
- delete m_Protocol;
- m_Protocol = nullptr;
-}
-
-
-
-
-
AString cProtocolRecognizer::GetVersionTextFromInt(int a_ProtocolVersion)
{
switch (a_ProtocolVersion)
@@ -61,6 +50,7 @@ AString cProtocolRecognizer::GetVersionTextFromInt(int a_ProtocolVersion)
case PROTO_VERSION_1_11_1: return "1.11.1";
case PROTO_VERSION_1_12: return "1.12";
case PROTO_VERSION_1_12_1: return "1.12.1";
+ case PROTO_VERSION_1_13: return "1.13";
}
ASSERT(!"Unknown protocol version");
return Printf("Unknown protocol (%d)", a_ProtocolVersion);
@@ -1098,62 +1088,62 @@ bool cProtocolRecognizer::TryRecognizeLengthedProtocol(UInt32 a_PacketLengthRema
case PROTO_VERSION_1_8_0:
{
m_Buffer.CommitRead();
- m_Protocol = new cProtocol_1_8_0(m_Client, ServerAddress, ServerPort, NextState);
+ m_Protocol.reset(new cProtocol_1_8_0(m_Client, ServerAddress, ServerPort, NextState));
return true;
}
case PROTO_VERSION_1_9_0:
{
- m_Protocol = new cProtocol_1_9_0(m_Client, ServerAddress, ServerPort, NextState);
+ m_Protocol.reset(new cProtocol_1_9_0(m_Client, ServerAddress, ServerPort, NextState));
return true;
}
case PROTO_VERSION_1_9_1:
{
- m_Protocol = new cProtocol_1_9_1(m_Client, ServerAddress, ServerPort, NextState);
+ m_Protocol.reset(new cProtocol_1_9_1(m_Client, ServerAddress, ServerPort, NextState));
return true;
}
case PROTO_VERSION_1_9_2:
{
- m_Protocol = new cProtocol_1_9_2(m_Client, ServerAddress, ServerPort, NextState);
+ m_Protocol.reset(new cProtocol_1_9_2(m_Client, ServerAddress, ServerPort, NextState));
return true;
}
case PROTO_VERSION_1_9_4:
{
- m_Protocol = new cProtocol_1_9_4(m_Client, ServerAddress, ServerPort, NextState);
+ m_Protocol.reset(new cProtocol_1_9_4(m_Client, ServerAddress, ServerPort, NextState));
return true;
}
case PROTO_VERSION_1_10_0:
{
- m_Protocol = new cProtocol_1_10_0(m_Client, ServerAddress, ServerPort, NextState);
+ m_Protocol.reset(new cProtocol_1_10_0(m_Client, ServerAddress, ServerPort, NextState));
return true;
}
case PROTO_VERSION_1_11_0:
{
- m_Protocol = new cProtocol_1_11_0(m_Client, ServerAddress, ServerPort, NextState);
+ m_Protocol.reset(new cProtocol_1_11_0(m_Client, ServerAddress, ServerPort, NextState));
return true;
}
case PROTO_VERSION_1_11_1:
{
- m_Protocol = new cProtocol_1_11_1(m_Client, ServerAddress, ServerPort, NextState);
+ m_Protocol.reset(new cProtocol_1_11_1(m_Client, ServerAddress, ServerPort, NextState));
return true;
}
case PROTO_VERSION_1_12:
{
- m_Protocol = new cProtocol_1_12(m_Client, ServerAddress, ServerPort, NextState);
+ m_Protocol.reset(new cProtocol_1_12(m_Client, ServerAddress, ServerPort, NextState));
return true;
}
case PROTO_VERSION_1_12_1:
{
- m_Protocol = new cProtocol_1_12_1(m_Client, ServerAddress, ServerPort, NextState);
+ m_Protocol.reset(new cProtocol_1_12_1(m_Client, ServerAddress, ServerPort, NextState));
return true;
}
case PROTO_VERSION_1_12_2:
{
- m_Protocol = new cProtocol_1_12_2(m_Client, ServerAddress, ServerPort, NextState);
+ m_Protocol.reset(new cProtocol_1_12_2(m_Client, ServerAddress, ServerPort, NextState));
return true;
}
case PROTO_VERSION_1_13:
{
- m_Protocol = new cProtocol_1_13(m_Client, ServerAddress, ServerPort, NextState);
+ m_Protocol.reset(new cProtocol_1_13(m_Client, ServerAddress, ServerPort, NextState));
return true;
}
default:
diff --git a/src/Protocol/ProtocolRecognizer.h b/src/Protocol/ProtocolRecognizer.h
index 185793f55..691de5e57 100644
--- a/src/Protocol/ProtocolRecognizer.h
+++ b/src/Protocol/ProtocolRecognizer.h
@@ -1,13 +1,3 @@
-
-// ProtocolRecognizer.h
-
-// Interfaces to the cProtocolRecognizer class representing the meta-protocol that recognizes possibly multiple
-// protocol versions and redirects everything to them
-
-
-
-
-
#pragma once
#include "Protocol.h"
@@ -26,7 +16,9 @@
-class cProtocolRecognizer :
+/** Meta-protocol that recognizes multiple protocol versions, creates the specific
+protocol version instance and redirects everything to it. */
+class cProtocolRecognizer:
public cProtocol
{
typedef cProtocol super;
@@ -49,7 +41,7 @@ public:
};
cProtocolRecognizer(cClientHandle * a_Client);
- virtual ~cProtocolRecognizer() override;
+ virtual ~cProtocolRecognizer() override {}
/** Translates protocol version number into protocol version text: 49 -> "1.4.4" */
static AString GetVersionTextFromInt(int a_ProtocolVersion);
@@ -149,9 +141,11 @@ public:
virtual void SendData(const char * a_Data, size_t a_Size) override;
+
protected:
+
/** The recognized protocol */
- cProtocol * m_Protocol;
+ std::unique_ptr<cProtocol> m_Protocol;
/** Buffer for the incoming data until we recognize the protocol */
cByteBuffer m_Buffer;