1
0

Added assert to cProtocolRecognizer::GetPacketId. (#4001)

This commit is contained in:
Lane Kolbly 2017-09-04 10:58:38 -05:00 committed by Alexander Harkness
parent aebfbfb8c8
commit 028a35ef0d
5 changed files with 29 additions and 17 deletions

View File

@ -131,9 +131,6 @@ public:
/** Called when client sends some data */ /** Called when client sends some data */
virtual void DataReceived(const char * a_Data, size_t a_Size) = 0; virtual void DataReceived(const char * a_Data, size_t a_Size) = 0;
/** Returns the protocol-specific packet ID given the protocol-agnostic packet enum (see PacketID.cpp for implementations) */
virtual UInt32 GetPacketId(eOutgoingPackets a_Packet) = 0;
// Sending stuff to clients (alphabetically sorted): // Sending stuff to clients (alphabetically sorted):
virtual void SendAttachEntity (const cEntity & a_Entity, const cEntity & a_Vehicle) = 0; virtual void SendAttachEntity (const cEntity & a_Entity, const cEntity & a_Vehicle) = 0;
virtual void SendBlockAction (int a_BlockX, int a_BlockY, int a_BlockZ, char a_Byte1, char a_Byte2, BLOCKTYPE a_BlockType) = 0; virtual void SendBlockAction (int a_BlockX, int a_BlockY, int a_BlockZ, char a_Byte1, char a_Byte2, BLOCKTYPE a_BlockType) = 0;
@ -240,6 +237,9 @@ protected:
/** Buffer for composing packet length (so that each cPacketizer instance doesn't allocate a new cPacketBuffer) */ /** Buffer for composing packet length (so that each cPacketizer instance doesn't allocate a new cPacketBuffer) */
cByteBuffer m_OutPacketLenBuffer; cByteBuffer m_OutPacketLenBuffer;
/** Returns the protocol-specific packet ID given the protocol-agnostic packet enum (see PacketID.cpp for implementations) */
virtual UInt32 GetPacketId(eOutgoingPackets a_Packet) = 0;
/** A generic data-sending routine, all outgoing packet data needs to be routed through this so that descendants may override it. */ /** A generic data-sending routine, all outgoing packet data needs to be routed through this so that descendants may override it. */
virtual void SendData(const char * a_Data, size_t a_Size) = 0; virtual void SendData(const char * a_Data, size_t a_Size) = 0;

View File

@ -52,9 +52,6 @@ public:
/** 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);
/** GetPacketId is implemented in each protocol version class */
virtual UInt32 GetPacketId(eOutgoingPackets a_Packet) override { return 0; }
/** Called when client sends some data: */ /** Called when client sends some data: */
virtual void DataReceived(const char * a_Data, size_t a_Size) override; virtual void DataReceived(const char * a_Data, size_t a_Size) override;
@ -159,6 +156,13 @@ protected:
/** Is a server list ping for an unrecognized version currently occuring? */ /** Is a server list ping for an unrecognized version currently occuring? */
bool m_InPingForUnrecognizedVersion; bool m_InPingForUnrecognizedVersion;
/** GetPacketId is implemented in each protocol version class */
virtual UInt32 GetPacketId(eOutgoingPackets a_Packet) override
{
ASSERT(!"cProtocolRecognizer::GetPacketId should never be called! Something is horribly wrong! (this method being called implies that someone other than a Protocol-derived class is calling GetPacketId)");
return 0;
}
// Packet handlers while in status state (m_InPingForUnrecognizedVersion == true) // Packet handlers while in status state (m_InPingForUnrecognizedVersion == true)
void HandlePacketStatusRequest(); void HandlePacketStatusRequest();
void HandlePacketStatusPing(); void HandlePacketStatusPing();

View File

@ -30,8 +30,6 @@ class cProtocol_1_12 :
public: public:
cProtocol_1_12(cClientHandle * a_Client, const AString &a_ServerAddress, UInt16 a_ServerPort, UInt32 a_State); cProtocol_1_12(cClientHandle * a_Client, const AString &a_ServerAddress, UInt16 a_ServerPort, UInt32 a_State);
virtual UInt32 GetPacketId(eOutgoingPackets a_Packet) override;
virtual void SendCollectEntity(const cEntity & a_Entity, const cPlayer & a_Player, int a_Count) override; virtual void SendCollectEntity(const cEntity & a_Entity, const cPlayer & a_Player, int a_Count) override;
virtual void SendHideTitle(void) override; virtual void SendHideTitle(void) override;
virtual void SendResetTitle(void) override; virtual void SendResetTitle(void) override;
@ -45,6 +43,10 @@ protected:
virtual void HandlePacketStatusRequest(cByteBuffer & a_ByteBuffer) override; virtual void HandlePacketStatusRequest(cByteBuffer & a_ByteBuffer) override;
virtual void WriteEntityMetadata(cPacketizer & a_Pkt, const cEntity & a_Entity) override; virtual void WriteEntityMetadata(cPacketizer & a_Pkt, const cEntity & a_Entity) override;
virtual void WriteMobMetadata(cPacketizer & a_Pkt, const cMonster & a_Mob) override; virtual void WriteMobMetadata(cPacketizer & a_Pkt, const cMonster & a_Mob) override;
protected:
virtual UInt32 GetPacketId(eOutgoingPackets a_Packet) override;
}; };
@ -59,9 +61,9 @@ class cProtocol_1_12_1 :
public: public:
cProtocol_1_12_1(cClientHandle * a_Client, const AString &a_ServerAddress, UInt16 a_ServerPort, UInt32 a_State); cProtocol_1_12_1(cClientHandle * a_Client, const AString &a_ServerAddress, UInt16 a_ServerPort, UInt32 a_State);
protected:
virtual UInt32 GetPacketId(eOutgoingPackets a_Packet) override; virtual UInt32 GetPacketId(eOutgoingPackets a_Packet) override;
protected:
virtual bool HandlePacket(cByteBuffer & a_ByteBuffer, UInt32 a_PacketType) override; virtual bool HandlePacket(cByteBuffer & a_ByteBuffer, UInt32 a_PacketType) override;
virtual void HandlePacketStatusRequest(cByteBuffer & a_ByteBuffer) override; virtual void HandlePacketStatusRequest(cByteBuffer & a_ByteBuffer) override;
}; };

View File

@ -45,9 +45,6 @@ public:
cProtocol_1_8_0(cClientHandle * a_Client, const AString & a_ServerAddress, UInt16 a_ServerPort, UInt32 a_State); cProtocol_1_8_0(cClientHandle * a_Client, const AString & a_ServerAddress, UInt16 a_ServerPort, UInt32 a_State);
/** Nobody inherits 1.8, so it doesn't use this method */
virtual UInt32 GetPacketId(eOutgoingPackets a_Packet) override { return 0; }
/** Called when client sends some data: */ /** Called when client sends some data: */
virtual void DataReceived(const char * a_Data, size_t a_Size) override; virtual void DataReceived(const char * a_Data, size_t a_Size) override;
@ -176,6 +173,13 @@ protected:
/** Adds the received (unencrypted) data to m_ReceivedData, parses complete packets */ /** Adds the received (unencrypted) data to m_ReceivedData, parses complete packets */
void AddReceivedData(const char * a_Data, size_t a_Size); void AddReceivedData(const char * a_Data, size_t a_Size);
/** Nobody inherits 1.8, so it doesn't use this method */
virtual UInt32 GetPacketId(eOutgoingPackets a_Packet) override
{
ASSERT(!"GetPacketId for cProtocol_1_8_0 is not implemented.");
return 0;
}
/** Reads and handles the packet. The packet length and type have already been read. /** Reads and handles the packet. The packet length and type have already been read.
Returns true if the packet was understood, false if it was an unknown packet Returns true if the packet was understood, false if it was an unknown packet
*/ */

View File

@ -51,9 +51,6 @@ public:
cProtocol_1_9_0(cClientHandle * a_Client, const AString & a_ServerAddress, UInt16 a_ServerPort, UInt32 a_State); cProtocol_1_9_0(cClientHandle * a_Client, const AString & a_ServerAddress, UInt16 a_ServerPort, UInt32 a_State);
/** Get the packet ID for a given packet */
virtual UInt32 GetPacketId(eOutgoingPackets a_Packet) override;
/** Called when client sends some data: */ /** Called when client sends some data: */
virtual void DataReceived(const char * a_Data, size_t a_Size) override; virtual void DataReceived(const char * a_Data, size_t a_Size) override;
@ -186,6 +183,9 @@ protected:
/** Adds the received (unencrypted) data to m_ReceivedData, parses complete packets */ /** Adds the received (unencrypted) data to m_ReceivedData, parses complete packets */
void AddReceivedData(const char * a_Data, size_t a_Size); void AddReceivedData(const char * a_Data, size_t a_Size);
/** Get the packet ID for a given packet */
virtual UInt32 GetPacketId(eOutgoingPackets a_Packet) override;
/** Reads and handles the packet. The packet length and type have already been read. /** Reads and handles the packet. The packet length and type have already been read.
Returns true if the packet was understood, false if it was an unknown packet. */ Returns true if the packet was understood, false if it was an unknown packet. */
virtual bool HandlePacket(cByteBuffer & a_ByteBuffer, UInt32 a_PacketType); virtual bool HandlePacket(cByteBuffer & a_ByteBuffer, UInt32 a_PacketType);
@ -339,14 +339,16 @@ class cProtocol_1_9_4 :
public: public:
cProtocol_1_9_4(cClientHandle * a_Client, const AString & a_ServerAddress, UInt16 a_ServerPort, UInt32 a_State); cProtocol_1_9_4(cClientHandle * a_Client, const AString & a_ServerAddress, UInt16 a_ServerPort, UInt32 a_State);
virtual UInt32 GetPacketId(eOutgoingPackets a_Packet) override;
// cProtocol_1_9_2 overrides: // cProtocol_1_9_2 overrides:
virtual void SendChunkData (int a_ChunkX, int a_ChunkZ, cChunkDataSerializer & a_Serializer) override; virtual void SendChunkData (int a_ChunkX, int a_ChunkZ, cChunkDataSerializer & a_Serializer) override;
virtual void SendUpdateSign (int a_BlockX, int a_BlockY, int a_BlockZ, const AString & a_Line1, const AString & a_Line2, const AString & a_Line3, const AString & a_Line4) override; virtual void SendUpdateSign (int a_BlockX, int a_BlockY, int a_BlockZ, const AString & a_Line1, const AString & a_Line2, const AString & a_Line3, const AString & a_Line4) override;
virtual void HandlePacketStatusRequest(cByteBuffer & a_ByteBuffer) override; virtual void HandlePacketStatusRequest(cByteBuffer & a_ByteBuffer) override;
protected:
virtual UInt32 GetPacketId(eOutgoingPackets a_Packet) override;
} ; } ;