1
0

ProtocolRecognizer: Updated to unique_ptr.

This commit is contained in:
Mattes D 2020-01-03 14:30:51 +01:00
parent b63bb2f694
commit 583fd0a387
2 changed files with 20 additions and 36 deletions

View File

@ -27,7 +27,6 @@
cProtocolRecognizer::cProtocolRecognizer(cClientHandle * a_Client) : cProtocolRecognizer::cProtocolRecognizer(cClientHandle * a_Client) :
super(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_Buffer(8192), // We need a larger buffer to support BungeeCord - it sends one huge packet at the start
m_InPingForUnrecognizedVersion(false) 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) AString cProtocolRecognizer::GetVersionTextFromInt(int a_ProtocolVersion)
{ {
switch (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_11_1: return "1.11.1";
case PROTO_VERSION_1_12: return "1.12"; case PROTO_VERSION_1_12: return "1.12";
case PROTO_VERSION_1_12_1: return "1.12.1"; case PROTO_VERSION_1_12_1: return "1.12.1";
case PROTO_VERSION_1_13: return "1.13";
} }
ASSERT(!"Unknown protocol version"); ASSERT(!"Unknown protocol version");
return Printf("Unknown protocol (%d)", a_ProtocolVersion); return Printf("Unknown protocol (%d)", a_ProtocolVersion);
@ -1098,62 +1088,62 @@ bool cProtocolRecognizer::TryRecognizeLengthedProtocol(UInt32 a_PacketLengthRema
case PROTO_VERSION_1_8_0: case PROTO_VERSION_1_8_0:
{ {
m_Buffer.CommitRead(); 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; return true;
} }
case PROTO_VERSION_1_9_0: 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; return true;
} }
case PROTO_VERSION_1_9_1: 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; return true;
} }
case PROTO_VERSION_1_9_2: 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; return true;
} }
case PROTO_VERSION_1_9_4: 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; return true;
} }
case PROTO_VERSION_1_10_0: 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; return true;
} }
case PROTO_VERSION_1_11_0: 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; return true;
} }
case PROTO_VERSION_1_11_1: 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; return true;
} }
case PROTO_VERSION_1_12: 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; return true;
} }
case PROTO_VERSION_1_12_1: 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; return true;
} }
case PROTO_VERSION_1_12_2: 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; return true;
} }
case PROTO_VERSION_1_13: 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; return true;
} }
default: default:

View File

@ -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 #pragma once
#include "Protocol.h" #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 public cProtocol
{ {
typedef cProtocol super; typedef cProtocol super;
@ -49,7 +41,7 @@ public:
}; };
cProtocolRecognizer(cClientHandle * a_Client); cProtocolRecognizer(cClientHandle * a_Client);
virtual ~cProtocolRecognizer() override; virtual ~cProtocolRecognizer() override {}
/** Translates protocol version number into protocol version text: 49 -> "1.4.4" */ /** Translates protocol version number into protocol version text: 49 -> "1.4.4" */
static AString GetVersionTextFromInt(int a_ProtocolVersion); static AString GetVersionTextFromInt(int a_ProtocolVersion);
@ -149,9 +141,11 @@ public:
virtual void SendData(const char * a_Data, size_t a_Size) override; virtual void SendData(const char * a_Data, size_t a_Size) override;
protected: protected:
/** The recognized protocol */ /** The recognized protocol */
cProtocol * m_Protocol; std::unique_ptr<cProtocol> m_Protocol;
/** Buffer for the incoming data until we recognize the protocol */ /** Buffer for the incoming data until we recognize the protocol */
cByteBuffer m_Buffer; cByteBuffer m_Buffer;