3535
3636class 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// -----------------------------------------------------------------------------
3991class 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
77130template <typename NetPacketType, typename SmallNetPacketType>
78131class 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
119177protected:
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
153211protected:
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
213271protected:
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
230288protected:
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
249307protected:
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
270328protected:
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
288346protected:
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
330388protected:
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
370428protected:
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
390448protected:
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
411469protected:
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
429487protected:
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
464522private:
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
497555protected:
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
526584protected:
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
548606protected:
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
565623protected:
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
581639protected:
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
597655protected:
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
611669class 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};
0 commit comments