20inline ProtocolPacket::ProtocolPacket(Header header, Realm realmId, CountId countId)
22 this->operator<<(header) << realmId << countId;
25inline bool ProtocolPacket::haveCorrectHeaderSize()
const
27 return this->getDataSize() >= HeaderSize;
29inline std::optional<ProtocolPacket::Header> ProtocolPacket::retrieveHeader()
const
31 if (this->haveCorrectHeaderSize())
34 this->unpack(HeaderIdPosition, &header,
sizeof(Header));
39inline std::optional<ProtocolPacket::Header> ProtocolPacket::retrieveHeaderId()
const
41 if (this->haveCorrectHeaderSize())
44 this->unpack(HeaderIdPosition, &headerId,
sizeof(Header));
45 return headerId & ~FGE_NET_HEADER_FLAGS_MASK;
49inline std::optional<ProtocolPacket::Realm> ProtocolPacket::retrieveRealm()
const
51 if (this->haveCorrectHeaderSize())
54 this->unpack(RealmPosition, &realm,
sizeof(Realm));
59inline std::optional<ProtocolPacket::CountId> ProtocolPacket::retrieveCountId()
const
61 if (this->haveCorrectHeaderSize())
64 this->unpack(CountIdPosition, &countId,
sizeof(CountId));
70inline void ProtocolPacket::setHeader(Header header)
72 this->pack(HeaderIdPosition, &header,
sizeof(Header));
74inline void ProtocolPacket::setHeaderId(Header headerId)
76 if (this->haveCorrectHeaderSize())
79 this->unpack(HeaderIdPosition, &header,
sizeof(Header));
80 header = (header & FGE_NET_HEADER_FLAGS_MASK) | (headerId & ~FGE_NET_HEADER_FLAGS_MASK);
81 this->pack(HeaderIdPosition, &header,
sizeof(Header));
84inline void ProtocolPacket::setHeaderFlags(Header headerFlags)
86 if (this->haveCorrectHeaderSize())
89 this->unpack(HeaderIdPosition, &header,
sizeof(Header));
90 header = (header & ~FGE_NET_HEADER_FLAGS_MASK) | (headerFlags & FGE_NET_HEADER_FLAGS_MASK);
91 this->pack(HeaderIdPosition, &header,
sizeof(Header));
94inline void ProtocolPacket::addHeaderFlags(Header headerFlags)
96 if (this->haveCorrectHeaderSize())
99 this->unpack(HeaderIdPosition, &headerId,
sizeof(Header));
100 headerId |= headerFlags & FGE_NET_HEADER_FLAGS_MASK;
101 this->pack(HeaderIdPosition, &headerId,
sizeof(Header));
104inline void ProtocolPacket::removeHeaderFlags(Header headerFlags)
106 if (this->haveCorrectHeaderSize())
109 this->unpack(HeaderIdPosition, &headerId,
sizeof(Header));
110 headerId &= ~headerFlags & FGE_NET_HEADER_FLAGS_MASK;
111 this->pack(HeaderIdPosition, &headerId,
sizeof(Header));
114inline void ProtocolPacket::setRealm(Realm realmId)
116 this->pack(RealmPosition, &realmId,
sizeof(Realm));
118inline void ProtocolPacket::setCountId(CountId countId)
120 this->pack(CountIdPosition, &countId,
sizeof(CountId));