mirror of
https://github.com/DarkflameUniverse/DarkflameServer.git
synced 2026-10-02 02:43:44 +00:00
refactor: remove the packet macros, WriteHeader and PacketUtils
Nothing in the server writes or reads a packet by hand any more, so the helpers for doing so go: - CBITSTREAM, CMSGHEADER, CINSTREAM, CINSTREAM_SKIP_HEADER, SEND_PACKET, SEND_PACKET_BROADCAST and HEADER_SIZE leave dCommonVars.h; - the free BitStreamUtils::WriteHeader (LUBitStream::WriteHeader writes the same bytes) and the unused PacketUtils::SavePacket are deleted. The last raw reads are replaced: WorldServer builds its input stream directly, the master packet logs read the header with LUBitStream::ReadHeader instead of peeking at packet->data[1] and [3], and MessageInspector reads a sent game message's header with the new NetGameMsg::ReadPacketHeader (the counterpart of WritePacket) instead of memcmp/memcpy. packet->data[0] is still compared with RakNet's own connection IDs. The frozen oracles keep using the macros verbatim through the test-only tests/dGameTests/LegacyPacketMacros.h; the HeaderSkip tests, which only tested CINSTREAM_SKIP_HEADER, are removed. docs/PacketArchitecture.md: "where we are" now describes the final state and what still touches raw bytes (RakNet IDs, replica headers, behavior bit streams), and a new section collects the known wire discrepancies found during the conversion, with client addresses. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -11,6 +11,7 @@
|
||||
// The byte-equality tests send the same inputs through these and through the new structs and require identical
|
||||
// bytes, so the wire format is pinned even after the production code is deleted.
|
||||
|
||||
#include "LegacyPacketMacros.h"
|
||||
#include "BitStreamUtils.h"
|
||||
#include "dCommonVars.h"
|
||||
#include "dServer.h"
|
||||
|
||||
@@ -8,6 +8,7 @@
|
||||
// The byte-equality tests run the same inputs through these and through the new structs and require
|
||||
// identical bytes, so the wire format is pinned even after the production code is deleted.
|
||||
|
||||
#include "LegacyPacketMacros.h"
|
||||
#include "AuthPackets.h"
|
||||
#include "BitStreamUtils.h"
|
||||
#include "ClientPackets.h"
|
||||
|
||||
@@ -11,6 +11,7 @@
|
||||
// These messages never reach a client, but master, worlds, auth, chat and the dashboard can run different builds
|
||||
// during an update, so their bytes are pinned too.
|
||||
|
||||
#include "LegacyPacketMacros.h"
|
||||
#include "BitStreamUtils.h"
|
||||
#include "dCommonVars.h"
|
||||
#include "MessageType/Master.h"
|
||||
|
||||
@@ -9,6 +9,7 @@
|
||||
// returns what was read, or the packet that was built, instead of acting on it).
|
||||
// Only the namespace changed. The byte-equality tests run the same inputs through these and the new structs.
|
||||
|
||||
#include "LegacyPacketMacros.h"
|
||||
#include "BitStreamUtils.h"
|
||||
#include "dCommonVars.h"
|
||||
#include "dServer.h"
|
||||
|
||||
@@ -48,7 +48,7 @@ namespace {
|
||||
template<typename T>
|
||||
void ExpectHeaderThenSerialize(const T& msg, MessageType::Master id) {
|
||||
RakNet::BitStream old;
|
||||
BitStreamUtils::WriteHeader(old, ServiceType::MASTER, id);
|
||||
LUBitStream(ServiceType::MASTER, id).WriteHeader(old);
|
||||
msg.Serialize(old);
|
||||
EXPECT_PACKET_EQ(FromBitStream(old), StructPacket(msg));
|
||||
RoundTrip(msg);
|
||||
|
||||
Reference in New Issue
Block a user