diff options
-rw-r--r-- | src/Protocol/ProtocolRecognizer.cpp | 36 | ||||
-rw-r--r-- | src/Protocol/ProtocolRecognizer.h | 20 |
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; |