mirror of
https://github.com/overte-org/overte.git
synced 2025-08-04 11:57:58 +02:00
add get seq num, cleanup PacketHeaders methods
This commit is contained in:
parent
b0c7af1714
commit
e2986f5702
2 changed files with 48 additions and 21 deletions
|
@ -227,33 +227,55 @@ QByteArray hashForPacketAndConnectionUUID(const QByteArray& packet, const QUuid&
|
|||
QCryptographicHash::Md5);
|
||||
}
|
||||
|
||||
void replaceHashInPacketGivenType(QByteArray& packet, PacketType packetType, const QUuid& connectionUUID) {
|
||||
PacketSequenceNumber sequenceNumberFromHeader(const QByteArray& packet, PacketType packetType) {
|
||||
if (packetType == PacketTypeUnknown) {
|
||||
packetType = packetTypeForPacket(packet);
|
||||
}
|
||||
|
||||
if (SEQUENCE_NUMBERED_PACKETS.contains(packetType)) {
|
||||
bool converted = false;
|
||||
PacketSequenceNumber sequenceNumber = packet.mid(sequenceNumberOffsetForPacketType(packetType),
|
||||
sizeof(PacketSequenceNumber)).toShort(&converted);
|
||||
|
||||
if (converted) {
|
||||
return sequenceNumber;
|
||||
}
|
||||
}
|
||||
|
||||
return DEFAULT_SEQUENCE_NUMBER;
|
||||
}
|
||||
|
||||
void replaceHashInPacket(QByteArray& packet, const QUuid& connectionUUID, PacketType packetType) {
|
||||
if (packetType == PacketTypeUnknown) {
|
||||
packetType = packetTypeForPacket(packet);
|
||||
}
|
||||
|
||||
packet.replace(hashOffsetForPacketType(packetType), NUM_BYTES_MD5_HASH,
|
||||
hashForPacketAndConnectionUUID(packet, connectionUUID));
|
||||
hashForPacketAndConnectionUUID(packet, connectionUUID));
|
||||
}
|
||||
|
||||
void replaceHashInPacket(QByteArray& packet, const QUuid& connectionUUID) {
|
||||
replaceHashInPacketGivenType(packet, packetTypeForPacket(packet), connectionUUID);
|
||||
}
|
||||
void replaceSequenceNumberInPacket(QByteArray& packet, PacketSequenceNumber sequenceNumber, PacketType packetType) {
|
||||
if (packetType == PacketTypeUnknown) {
|
||||
packetType = packetTypeForPacket(packet);
|
||||
}
|
||||
|
||||
void replaceSequenceNumberInPacketGivenType(QByteArray& packet, PacketType packetType, PacketSequenceNumber sequenceNumber) {
|
||||
packet.replace(sequenceNumberOffsetForPacketType(packetType),
|
||||
sizeof(PacketSequenceNumber), reinterpret_cast<char*>(&sequenceNumber));
|
||||
}
|
||||
|
||||
void replaceSequenceNumberInPacket(QByteArray& packet, PacketSequenceNumber sequenceNumber) {
|
||||
replaceSequenceNumberInPacketGivenType(packet, packetTypeForPacket(packet), sequenceNumber);
|
||||
}
|
||||
|
||||
void replaceHashAndSequenceNumberInPacketGivenType(QByteArray& packet, PacketType packetType,
|
||||
const QUuid& connectionUUID, PacketSequenceNumber sequenceNumber) {
|
||||
replaceHashInPacketGivenType(packet, packetType, connectionUUID);
|
||||
replaceSequenceNumberInPacketGivenType(packet, packetType, sequenceNumber);
|
||||
|
||||
}
|
||||
|
||||
void replaceHashAndSequenceNumberInPacket(QByteArray& packet, const QUuid& connectionUUID, PacketSequenceNumber sequenceNumber,
|
||||
PacketType packetType) {
|
||||
if (packetType == PacketTypeUnknown) {
|
||||
packetType = packetTypeForPacket(packet);
|
||||
}
|
||||
|
||||
void replaceHashAndSequenceNumberInPacket(QByteArray& packet, const QUuid& connectionUUID, PacketSequenceNumber sequenceNumber) {
|
||||
replaceHashAndSequenceNumberInPacketGivenType(packet, packetTypeForPacket(packet), connectionUUID, sequenceNumber);
|
||||
replaceHashInPacket(packet, connectionUUID, packetType);
|
||||
replaceSequenceNumberInPacket(packet, sequenceNumber, packetType);
|
||||
}
|
||||
|
||||
PacketType packetTypeForPacket(const QByteArray& packet) {
|
||||
|
|
|
@ -83,7 +83,9 @@ enum PacketType {
|
|||
};
|
||||
|
||||
typedef char PacketVersion;
|
||||
|
||||
typedef uint16_t PacketSequenceNumber;
|
||||
const PacketSequenceNumber DEFAULT_SEQUENCE_NUMBER = 0;
|
||||
|
||||
typedef std::map<PacketType, PacketSequenceNumber> PacketTypeSequenceMap;
|
||||
|
||||
|
@ -130,15 +132,18 @@ int sequenceNumberOffsetForPacketType(PacketType packetType);
|
|||
QByteArray hashFromPacketHeader(const QByteArray& packet);
|
||||
QByteArray hashForPacketAndConnectionUUID(const QByteArray& packet, const QUuid& connectionUUID);
|
||||
|
||||
void replaceHashInPacketGivenType(QByteArray& packet, PacketType packetType, const QUuid& connectionUUID);
|
||||
void replaceHashInPacket(QByteArray& packet, const QUuid& connectionUUID);
|
||||
// NOTE: The following four methods accept a PacketType which defaults to PacketTypeUnknown.
|
||||
// If the caller has already looked at the packet type and can provide it then the methods below won't have to look it up.
|
||||
|
||||
void replaceSequenceNumberInPacketGivenType(QByteArray& packet, PacketType packetType, PacketSequenceNumber sequenceNumber);
|
||||
void replaceSequenceNumberInPacket(QByteArray& packet, PacketSequenceNumber sequenceNumber);
|
||||
PacketSequenceNumber sequenceNumberFromHeader(const QByteArray& packet, PacketType packetType = PacketTypeUnknown);
|
||||
|
||||
void replaceHashAndSequenceNumberInPacketGivenType(QByteArray& packet, PacketType packetType,
|
||||
const QUuid& connectionUUID, PacketSequenceNumber sequenceNumber);
|
||||
void replaceHashAndSequenceNumberInPacket(QByteArray& packet, const QUuid& connectionUUID, PacketSequenceNumber sequenceNumber);
|
||||
void replaceHashInPacket(QByteArray& packet, const QUuid& connectionUUID, PacketType packetType = PacketTypeUnknown);
|
||||
|
||||
void replaceSequenceNumberInPacket(QByteArray& packet, PacketSequenceNumber sequenceNumber,
|
||||
PacketType packetType = PacketTypeUnknown);
|
||||
|
||||
void replaceHashAndSequenceNumberInPacket(QByteArray& packet, const QUuid& connectionUUID, PacketSequenceNumber sequenceNumber,
|
||||
PacketType packetType = PacketTypeUnknown);
|
||||
|
||||
int arithmeticCodingValueFromBuffer(const char* checkValue);
|
||||
int numBytesArithmeticCodingFromBuffer(const char* checkValue);
|
||||
|
|
Loading…
Reference in a new issue