Skip to content

Commit 82f6771

Browse files
committed
refactor(netpacket): Simplify NetPacket functions for packet buffer reads
1 parent 44b99c7 commit 82f6771

10 files changed

Lines changed: 845 additions & 1090 deletions

File tree

Core/GameEngine/Include/GameNetwork/NetCommandList.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@ class NetCommandList : public MemoryPoolObject
5050
void init(); ///< Initialize the list
5151
void reset(); ///< Reset the list to the initial state.
5252
NetCommandRef * addMessage(NetCommandMsg *cmdMsg); ///< Add message to the list in its properly ordered place.
53+
NetCommandRef * addMessage(NetCommandRef *&msg); ///< Add message to the list in its properly ordered place.
5354
Bool isEqualCommandMsg(NetCommandMsg *msg1, NetCommandMsg *msg2);
5455
NetCommandRef * getFirstMessage(); ///< Get the first message on the list.
5556
NetCommandRef * findMessage(NetCommandMsg *msg); ///< Find and return a reference to the given message if one exists.

Core/GameEngine/Include/GameNetwork/NetCommandMsg.h

Lines changed: 89 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,58 @@
3535

3636
class NetCommandRef;
3737

38+
//-----------------------------------------------------------------------------
39+
class NetCommandDataChunk
40+
{
41+
public:
42+
NetCommandDataChunk(Byte *data, UnsignedInt size)
43+
: m_data(reinterpret_cast<UnsignedByte *>(data))
44+
, m_size(size)
45+
{}
46+
47+
NetCommandDataChunk(UnsignedByte *data, UnsignedInt size)
48+
: m_data(data)
49+
, m_size(size)
50+
{}
51+
52+
NetCommandDataChunk(UnsignedInt size)
53+
: m_data(NEW UnsignedByte[size])
54+
, m_size(size)
55+
{}
56+
57+
~NetCommandDataChunk()
58+
{
59+
delete[] m_data;
60+
}
61+
62+
const UnsignedByte *data() const
63+
{
64+
return m_data;
65+
}
66+
67+
UnsignedByte *data()
68+
{
69+
return m_data;
70+
}
71+
72+
UnsignedInt size() const
73+
{
74+
return m_size;
75+
}
76+
77+
UnsignedByte *release()
78+
{
79+
UnsignedByte *ret = m_data;
80+
m_data = nullptr;
81+
m_size = 0;
82+
return ret;
83+
}
84+
85+
private:
86+
UnsignedByte *m_data;
87+
UnsignedInt m_size;
88+
};
89+
3890
//-----------------------------------------------------------------------------
3991
class NetCommandMsg : public MemoryPoolObject
4092
{
@@ -60,6 +112,7 @@ class NetCommandMsg : public MemoryPoolObject
60112
virtual size_t getSizeForSmallNetPacket(const Select* select = nullptr) const = 0;
61113
virtual size_t copyBytesForSmallNetPacket(UnsignedByte* buffer, const NetCommandRef& ref, const Select* select = nullptr) const = 0;
62114
virtual Select getSmallNetPacketSelect() const = 0;
115+
virtual size_t readMessageData(NetCommandRef& ref, NetPacketBuf buf) const = 0;
63116
void attach();
64117
void detach();
65118

@@ -77,25 +130,30 @@ class NetCommandMsg : public MemoryPoolObject
77130
template<typename NetPacketType, typename SmallNetPacketType>
78131
class NetCommandMsgT : public NetCommandMsg
79132
{
80-
virtual size_t getSizeForNetPacket() const
133+
virtual size_t getSizeForNetPacket() const override
81134
{
82135
return NetPacketType::getSize(*this);
83136
}
84137

85-
virtual size_t copyBytesForNetPacket(UnsignedByte* buffer, const NetCommandRef& ref) const
138+
virtual size_t copyBytesForNetPacket(UnsignedByte* buffer, const NetCommandRef& ref) const override
86139
{
87140
return NetPacketType::copyBytes(buffer, ref);
88141
}
89142

90-
virtual size_t getSizeForSmallNetPacket(const Select* select = nullptr) const
143+
virtual size_t getSizeForSmallNetPacket(const Select* select = nullptr) const override
91144
{
92145
return SmallNetPacketType::getSize(*this, select);
93146
}
94147

95-
virtual size_t copyBytesForSmallNetPacket(UnsignedByte* buffer, const NetCommandRef& ref, const Select* select = nullptr) const
148+
virtual size_t copyBytesForSmallNetPacket(UnsignedByte* buffer, const NetCommandRef& ref, const Select* select = nullptr) const override
96149
{
97150
return SmallNetPacketType::copyBytes(buffer, ref, select);
98151
}
152+
153+
virtual size_t readMessageData(NetCommandRef& ref, NetPacketBuf buf) const override
154+
{
155+
return SmallNetPacketType::CommandData::readMessage(ref, buf);
156+
}
99157
};
100158

101159
//-----------------------------------------------------------------------------
@@ -114,7 +172,7 @@ class NetGameCommandMsg : public NetCommandMsgT<NetPacketGameCommand, SmallNetPa
114172
void addArgument(const GameMessageArgumentDataType type, GameMessageArgumentType arg);
115173
void setGameMessageType(GameMessage::Type type);
116174

117-
virtual Select getSmallNetPacketSelect() const;
175+
virtual Select getSmallNetPacketSelect() const override;
118176

119177
protected:
120178
Int m_numArgs;
@@ -148,7 +206,7 @@ class NetAckCommandMsg : public NetCommandMsgT<NetPacketAckCommand, SmallNetPack
148206
void setOriginalPlayerID(UnsignedByte originalPlayerID);
149207
virtual Int getSortNumber() const;
150208

151-
virtual Select getSmallNetPacketSelect() const;
209+
virtual Select getSmallNetPacketSelect() const override;
152210

153211
protected:
154212
UnsignedShort m_commandID;
@@ -208,7 +266,7 @@ class NetFrameCommandMsg : public NetCommandMsgT<NetPacketFrameCommand, SmallNet
208266
void setCommandCount(UnsignedShort commandCount);
209267
UnsignedShort getCommandCount() const;
210268

211-
virtual Select getSmallNetPacketSelect() const;
269+
virtual Select getSmallNetPacketSelect() const override;
212270

213271
protected:
214272
UnsignedShort m_commandCount;
@@ -225,7 +283,7 @@ class NetPlayerLeaveCommandMsg : public NetCommandMsgT<NetPacketPlayerLeaveComma
225283
UnsignedByte getLeavingPlayerID() const;
226284
void setLeavingPlayerID(UnsignedByte id);
227285

228-
virtual Select getSmallNetPacketSelect() const;
286+
virtual Select getSmallNetPacketSelect() const override;
229287

230288
protected:
231289
UnsignedByte m_leavingPlayerID;
@@ -244,7 +302,7 @@ class NetRunAheadMetricsCommandMsg : public NetCommandMsgT<NetPacketRunAheadMetr
244302
Int getAverageFps() const;
245303
void setAverageFps(Int fps);
246304

247-
virtual Select getSmallNetPacketSelect() const;
305+
virtual Select getSmallNetPacketSelect() const override;
248306

249307
protected:
250308
Real m_averageLatency;
@@ -265,7 +323,7 @@ class NetRunAheadCommandMsg : public NetCommandMsgT<NetPacketRunAheadCommand, Sm
265323
UnsignedByte getFrameRate() const;
266324
void setFrameRate(UnsignedByte frameRate);
267325

268-
virtual Select getSmallNetPacketSelect() const;
326+
virtual Select getSmallNetPacketSelect() const override;
269327

270328
protected:
271329
UnsignedShort m_runAhead;
@@ -283,7 +341,7 @@ class NetDestroyPlayerCommandMsg : public NetCommandMsgT<NetPacketDestroyPlayerC
283341
UnsignedInt getPlayerIndex() const;
284342
void setPlayerIndex(UnsignedInt playerIndex);
285343

286-
virtual Select getSmallNetPacketSelect() const;
344+
virtual Select getSmallNetPacketSelect() const override;
287345

288346
protected:
289347
UnsignedInt m_playerIndex;
@@ -297,7 +355,7 @@ class NetKeepAliveCommandMsg : public NetCommandMsgT<NetPacketKeepAliveCommand,
297355
NetKeepAliveCommandMsg();
298356
//virtual ~NetKeepAliveCommandMsg();
299357

300-
virtual Select getSmallNetPacketSelect() const;
358+
virtual Select getSmallNetPacketSelect() const override;
301359
};
302360

303361
//-----------------------------------------------------------------------------
@@ -308,7 +366,7 @@ class NetDisconnectKeepAliveCommandMsg : public NetCommandMsgT<NetPacketDisconne
308366
NetDisconnectKeepAliveCommandMsg();
309367
//virtual ~NetDisconnectKeepAliveCommandMsg();
310368

311-
virtual Select getSmallNetPacketSelect() const;
369+
virtual Select getSmallNetPacketSelect() const override;
312370
};
313371

314372
//-----------------------------------------------------------------------------
@@ -325,7 +383,7 @@ class NetDisconnectPlayerCommandMsg : public NetCommandMsgT<NetPacketDisconnectP
325383
UnsignedInt getDisconnectFrame() const;
326384
void setDisconnectFrame(UnsignedInt frame);
327385

328-
virtual Select getSmallNetPacketSelect() const;
386+
virtual Select getSmallNetPacketSelect() const override;
329387

330388
protected:
331389
UnsignedByte m_disconnectSlot;
@@ -340,7 +398,7 @@ class NetPacketRouterQueryCommandMsg : public NetCommandMsgT<NetPacketRouterQuer
340398
NetPacketRouterQueryCommandMsg();
341399
//virtual ~NetPacketRouterQueryCommandMsg();
342400

343-
virtual Select getSmallNetPacketSelect() const;
401+
virtual Select getSmallNetPacketSelect() const override;
344402
};
345403

346404
//-----------------------------------------------------------------------------
@@ -351,7 +409,7 @@ class NetPacketRouterAckCommandMsg : public NetCommandMsgT<NetPacketRouterAckCom
351409
NetPacketRouterAckCommandMsg();
352410
//virtual ~NetPacketRouterAckCommandMsg();
353411

354-
virtual Select getSmallNetPacketSelect() const;
412+
virtual Select getSmallNetPacketSelect() const override;
355413
};
356414

357415
//-----------------------------------------------------------------------------
@@ -365,7 +423,7 @@ class NetDisconnectChatCommandMsg : public NetCommandMsgT<NetPacketDisconnectCha
365423
UnicodeString getText() const;
366424
void setText(UnicodeString text);
367425

368-
virtual Select getSmallNetPacketSelect() const;
426+
virtual Select getSmallNetPacketSelect() const override;
369427

370428
protected:
371429
UnicodeString m_text;
@@ -385,7 +443,7 @@ class NetChatCommandMsg : public NetCommandMsgT<NetPacketChatCommand, SmallNetPa
385443
Int getPlayerMask() const;
386444
void setPlayerMask( Int playerMask );
387445

388-
virtual Select getSmallNetPacketSelect() const;
446+
virtual Select getSmallNetPacketSelect() const override;
389447

390448
protected:
391449
UnicodeString m_text;
@@ -406,7 +464,7 @@ class NetDisconnectVoteCommandMsg : public NetCommandMsgT<NetPacketDisconnectVot
406464
UnsignedInt getVoteFrame() const;
407465
void setVoteFrame(UnsignedInt voteFrame);
408466

409-
virtual Select getSmallNetPacketSelect() const;
467+
virtual Select getSmallNetPacketSelect() const override;
410468

411469
protected:
412470
UnsignedByte m_slot;
@@ -424,7 +482,7 @@ class NetProgressCommandMsg: public NetCommandMsgT<NetPacketProgressCommand, Sma
424482
UnsignedByte getPercentage() const;
425483
void setPercentage( UnsignedByte percent );
426484

427-
virtual Select getSmallNetPacketSelect() const;
485+
virtual Select getSmallNetPacketSelect() const override;
428486

429487
protected:
430488
UnsignedByte m_percent;
@@ -440,7 +498,7 @@ class NetWrapperCommandMsg : public NetCommandMsgT<NetPacketWrapperCommand, Smal
440498

441499
const UnsignedByte * getData() const;
442500
UnsignedByte * getData();
443-
void setData(UnsignedByte *data, UnsignedInt dataLength);
501+
void setData(NetCommandDataChunk &dataChunk);
444502

445503
UnsignedInt getChunkNumber() const;
446504
void setChunkNumber(UnsignedInt chunkNumber);
@@ -459,7 +517,7 @@ class NetWrapperCommandMsg : public NetCommandMsgT<NetPacketWrapperCommand, Smal
459517
UnsignedShort getWrappedCommandID() const;
460518
void setWrappedCommandID(UnsignedShort wrappedCommandID);
461519

462-
virtual Select getSmallNetPacketSelect() const;
520+
virtual Select getSmallNetPacketSelect() const override;
463521

464522
private:
465523
UnsignedByte *m_data;
@@ -490,9 +548,9 @@ class NetFileCommandMsg : public NetCommandMsgT<NetPacketFileCommand, SmallNetPa
490548

491549
const UnsignedByte * getFileData() const;
492550
UnsignedByte * getFileData();
493-
void setFileData(UnsignedByte *data, UnsignedInt dataLength);
551+
void setFileData(NetCommandDataChunk &dataChunk);
494552

495-
virtual Select getSmallNetPacketSelect() const;
553+
virtual Select getSmallNetPacketSelect() const override;
496554

497555
protected:
498556
AsciiString m_portableFilename;
@@ -521,7 +579,7 @@ class NetFileAnnounceCommandMsg : public NetCommandMsgT<NetPacketFileAnnounceCom
521579
UnsignedByte getPlayerMask() const;
522580
void setPlayerMask(UnsignedByte playerMask);
523581

524-
virtual Select getSmallNetPacketSelect() const;
582+
virtual Select getSmallNetPacketSelect() const override;
525583

526584
protected:
527585
AsciiString m_portableFilename;
@@ -543,7 +601,7 @@ class NetFileProgressCommandMsg : public NetCommandMsgT<NetPacketFileProgressCom
543601
Int getProgress() const;
544602
void setProgress(Int val);
545603

546-
virtual Select getSmallNetPacketSelect() const;
604+
virtual Select getSmallNetPacketSelect() const override;
547605

548606
protected:
549607
UnsignedShort m_fileID;
@@ -560,7 +618,7 @@ class NetDisconnectFrameCommandMsg : public NetCommandMsgT<NetPacketDisconnectFr
560618
UnsignedInt getDisconnectFrame() const;
561619
void setDisconnectFrame(UnsignedInt disconnectFrame);
562620

563-
virtual Select getSmallNetPacketSelect() const;
621+
virtual Select getSmallNetPacketSelect() const override;
564622

565623
protected:
566624
UnsignedInt m_disconnectFrame;
@@ -576,7 +634,7 @@ class NetDisconnectScreenOffCommandMsg : public NetCommandMsgT<NetPacketDisconne
576634
UnsignedInt getNewFrame() const;
577635
void setNewFrame(UnsignedInt newFrame);
578636

579-
virtual Select getSmallNetPacketSelect() const;
637+
virtual Select getSmallNetPacketSelect() const override;
580638

581639
protected:
582640
UnsignedInt m_newFrame;
@@ -592,7 +650,7 @@ class NetFrameResendRequestCommandMsg : public NetCommandMsgT<NetPacketFrameRese
592650
UnsignedInt getFrameToResend() const;
593651
void setFrameToResend(UnsignedInt frame);
594652

595-
virtual Select getSmallNetPacketSelect() const;
653+
virtual Select getSmallNetPacketSelect() const override;
596654

597655
protected:
598656
UnsignedInt m_frameToResend;
@@ -605,7 +663,7 @@ class NetLoadCompleteCommandMsg : public NetCommandMsgT<NetPacketLoadCompleteCom
605663
NetLoadCompleteCommandMsg();
606664
//virtual ~NetLoadCompleteCommandMsg();
607665

608-
virtual Select getSmallNetPacketSelect() const;
666+
virtual Select getSmallNetPacketSelect() const override;
609667
};
610668

611669
class NetTimeOutGameStartCommandMsg : public NetCommandMsgT<NetPacketTimeOutGameStartCommand, SmallNetPacketTimeOutGameStartCommand>
@@ -615,5 +673,5 @@ class NetTimeOutGameStartCommandMsg : public NetCommandMsgT<NetPacketTimeOutGame
615673
NetTimeOutGameStartCommandMsg();
616674
//virtual ~NetTimeOutGameStartCommandMsg();
617675

618-
virtual Select getSmallNetPacketSelect() const;
676+
virtual Select getSmallNetPacketSelect() const override;
619677
};

Core/GameEngine/Include/GameNetwork/NetPacket.h

Lines changed: 2 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ class NetPacket : public MemoryPoolObject
6161

6262
NetCommandList *getCommandList();
6363

64-
static NetCommandRef * ConstructNetCommandMsgFromRawData(UnsignedByte *data, UnsignedShort dataLength);
64+
static NetCommandRef *ConstructNetCommandMsgFromRawData(const UnsignedByte *data, UnsignedInt dataLength);
6565
static NetPacketList ConstructBigCommandPacketList(NetCommandRef *ref);
6666

6767
UnsignedByte *getData();
@@ -80,38 +80,7 @@ class NetPacket : public MemoryPoolObject
8080
Bool isAckStage2Repeat(NetCommandRef *msg);
8181
Bool isFrameRepeat(NetCommandRef *msg);
8282

83-
static NetCommandMsg * readGameMessage(UnsignedByte *data, Int &i);
84-
static NetCommandMsg * readAckBothMessage(UnsignedByte *data, Int &i);
85-
static NetCommandMsg * readAckStage1Message(UnsignedByte *data, Int &i);
86-
static NetCommandMsg * readAckStage2Message(UnsignedByte *data, Int &i);
87-
static NetCommandMsg * readFrameMessage(UnsignedByte *data, Int &i);
88-
static NetCommandMsg * readPlayerLeaveMessage(UnsignedByte *data, Int &i);
89-
static NetCommandMsg * readRunAheadMetricsMessage(UnsignedByte *data, Int &i);
90-
static NetCommandMsg * readRunAheadMessage(UnsignedByte *data, Int &i);
91-
static NetCommandMsg * readDestroyPlayerMessage(UnsignedByte *data, Int &i);
92-
static NetCommandMsg * readKeepAliveMessage(UnsignedByte *data, Int &i);
93-
static NetCommandMsg * readDisconnectKeepAliveMessage(UnsignedByte *data, Int &i);
94-
static NetCommandMsg * readDisconnectPlayerMessage(UnsignedByte *data, Int &i);
95-
static NetCommandMsg * readPacketRouterQueryMessage(UnsignedByte *data, Int &i);
96-
static NetCommandMsg * readPacketRouterAckMessage(UnsignedByte *data, Int &i);
97-
static NetCommandMsg * readDisconnectChatMessage(UnsignedByte *data, Int &i);
98-
static NetCommandMsg * readDisconnectVoteMessage(UnsignedByte *data, Int &i);
99-
static NetCommandMsg * readChatMessage(UnsignedByte *data, Int &i);
100-
static NetCommandMsg * readProgressMessage(UnsignedByte *data, Int &i);
101-
static NetCommandMsg * readLoadCompleteMessage(UnsignedByte *data, Int &i);
102-
static NetCommandMsg * readTimeOutGameStartMessage(UnsignedByte *data, Int &i);
103-
static NetCommandMsg * readWrapperMessage(UnsignedByte *data, Int &i);
104-
static NetCommandMsg * readFileMessage(UnsignedByte *data, Int &i);
105-
static NetCommandMsg * readFileAnnounceMessage(UnsignedByte *data, Int &i);
106-
static NetCommandMsg * readFileProgressMessage(UnsignedByte *data, Int &i);
107-
static NetCommandMsg * readDisconnectFrameMessage(UnsignedByte *data, Int &i);
108-
static NetCommandMsg * readDisconnectScreenOffMessage(UnsignedByte *data, Int &i);
109-
static NetCommandMsg * readFrameResendRequestMessage(UnsignedByte *data, Int &i);
110-
111-
void writeGameMessageArgumentToPacket(GameMessageArgumentDataType type, GameMessageArgumentType arg);
112-
static void readGameMessageArgumentFromPacket(GameMessageArgumentDataType type, NetGameCommandMsg *msg, UnsignedByte *data, Int &i);
113-
114-
void dumpPacketToLog();
83+
static void dumpPacketToLog(const UnsignedByte *packet, Int packetLen);
11584

11685
protected:
11786
UnsignedByte m_packet[MAX_PACKET_SIZE];

0 commit comments

Comments
 (0)