Веб-сайт самохостера Lotigara

summaryrefslogtreecommitdiff
path: root/source/game/StarNetPacketSocket.cpp
diff options
context:
space:
mode:
authorKae <80987908+Novaenia@users.noreply.github.com>2024-12-05 15:39:11 +1100
committerKae <80987908+Novaenia@users.noreply.github.com>2024-12-05 15:39:11 +1100
commitdd52188e53e690f8eb872421f8a4c3bcc5699133 (patch)
treee99bf401ffad1f2b3988922188a12cffc04147f6 /source/game/StarNetPacketSocket.cpp
parent3fc12923ce2db3a5af87d8d1195ce2ac4c5b6030 (diff)
add sky setting overrides to celestial.flyShip, pass net rules to packet read/write
Diffstat (limited to 'source/game/StarNetPacketSocket.cpp')
-rw-r--r--source/game/StarNetPacketSocket.cpp39
1 files changed, 14 insertions, 25 deletions
diff --git a/source/game/StarNetPacketSocket.cpp b/source/game/StarNetPacketSocket.cpp
index 4caeea0..b6320fa 100644
--- a/source/game/StarNetPacketSocket.cpp
+++ b/source/game/StarNetPacketSocket.cpp
@@ -62,9 +62,8 @@ Maybe<PacketStats> PacketSocket::incomingStats() const {
Maybe<PacketStats> PacketSocket::outgoingStats() const {
return {};
}
-
-void PacketSocket::setLegacy(bool legacy) { m_legacy = legacy; }
-bool PacketSocket::legacy() const { return m_legacy; }
+void PacketSocket::setNetRules(NetCompatibilityRules netRules) { m_netRules = netRules; }
+NetCompatibilityRules PacketSocket::netRules() const { return m_netRules; }
void CompressedPacketSocket::setCompressionStreamEnabled(bool enabled) { m_useCompressionStream = enabled; }
bool CompressedPacketSocket::compressionStreamEnabled() const { return m_useCompressionStream; }
@@ -155,7 +154,8 @@ void TcpPacketSocket::sendPackets(List<PacketPtr> packets) {
PacketPtr& packet = it.next();
auto packetType = packet->type();
DataStreamBuffer packetBuffer;
- packet->write(packetBuffer);
+ packetBuffer.setStreamCompatibilityVersion(netRules());
+ packet->write(packetBuffer, netRules());
outBuffer.write(packetType);
outBuffer.writeVlqI((int)packetBuffer.size());
outBuffer.writeData(packetBuffer.ptr(), packetBuffer.size());
@@ -168,13 +168,11 @@ void TcpPacketSocket::sendPackets(List<PacketPtr> packets) {
PacketCompressionMode currentCompressionMode = it.peekNext()->compressionMode();
DataStreamBuffer packetBuffer;
+ packetBuffer.setStreamCompatibilityVersion(netRules());
while (it.hasNext()
&& it.peekNext()->type() == currentType
&& it.peekNext()->compressionMode() == currentCompressionMode) {
- if (legacy())
- it.next()->writeLegacy(packetBuffer);
- else
- it.next()->write(packetBuffer);
+ it.next()->write(packetBuffer, netRules());
}
// Packets must read and write actual data, because this is used to
@@ -239,6 +237,7 @@ List<PacketPtr> TcpPacketSocket::receivePackets() {
m_incomingStats.mix(packetType, packetSize, !compressionStreamEnabled());
DataStreamExternalBuffer packetStream(ds.ptr() + ds.pos(), packetSize);
+ packetStream.setStreamCompatibilityVersion(netRules());
ByteArray uncompressed;
if (packetCompressed) {
uncompressed = uncompressData(packetStream.ptr(), packetSize, PacketSizeLimit);
@@ -255,10 +254,7 @@ List<PacketPtr> TcpPacketSocket::receivePackets() {
}
PacketPtr packet = createPacket(packetType);
packet->setCompressionMode(packetCompressed ? PacketCompressionMode::Enabled : PacketCompressionMode::Disabled);
- if (legacy())
- packet->readLegacy(packetStream);
- else
- packet->read(packetStream);
+ packet->read(packetStream, netRules());
packets.append(std::move(packet));
} while (!packetStream.atEnd());
}
@@ -347,10 +343,6 @@ Maybe<PacketStats> TcpPacketSocket::outgoingStats() const {
return m_outgoingStats.stats();
}
-void TcpPacketSocket::setLegacy(bool legacy) {
- PacketSocket::setLegacy(legacy);
-}
-
TcpPacketSocket::TcpPacketSocket(TcpSocketPtr socket) : m_socket(std::move(socket)) {}
P2PPacketSocketUPtr P2PPacketSocket::open(P2PSocketUPtr socket) {
@@ -373,8 +365,9 @@ void P2PPacketSocket::sendPackets(List<PacketPtr> packets) {
while (it.hasNext()) {
PacketType currentType = it.peekNext()->type();
DataStreamBuffer packetBuffer;
+ packetBuffer.setStreamCompatibilityVersion(netRules());
while (it.hasNext() && it.peekNext()->type() == currentType)
- it.next()->write(packetBuffer);
+ it.next()->write(packetBuffer, netRules());
outBuffer.write(currentType);
outBuffer.write<bool>(false);
outBuffer.writeData(packetBuffer.ptr(), packetBuffer.size());
@@ -387,13 +380,11 @@ void P2PPacketSocket::sendPackets(List<PacketPtr> packets) {
PacketCompressionMode currentCompressionMode = it.peekNext()->compressionMode();
DataStreamBuffer packetBuffer;
+ packetBuffer.setStreamCompatibilityVersion(netRules());
while (it.hasNext()
&& it.peekNext()->type() == currentType
&& it.peekNext()->compressionMode() == currentCompressionMode) {
- if (legacy())
- it.next()->writeLegacy(packetBuffer);
- else
- it.next()->write(packetBuffer);
+ it.next()->write(packetBuffer, netRules());
}
// Packets must read and write actual data, because this is used to
@@ -440,13 +431,11 @@ List<PacketPtr> P2PPacketSocket::receivePackets() {
m_incomingStats.mix(packetType, packetSize, !compressionStreamEnabled());
DataStreamExternalBuffer packetStream(packetBytes);
+ packetStream.setStreamCompatibilityVersion(netRules());
do {
PacketPtr packet = createPacket(packetType);
packet->setCompressionMode(packetCompressed ? PacketCompressionMode::Enabled : PacketCompressionMode::Disabled);
- if (legacy())
- packet->readLegacy(packetStream);
- else
- packet->read(packetStream);
+ packet->read(packetStream, netRules());
packets.append(std::move(packet));
} while (!packetStream.atEnd());
}