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) :
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:

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
#include "Protocol.h"
@ -26,6 +16,8 @@
/** Meta-protocol that recognizes multiple protocol versions, creates the specific
protocol version instance and redirects everything to it. */
class cProtocolRecognizer:
public cProtocol
{
@ -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;