mirror of
https://github.com/SapphireServer/Sapphire.git
synced 2025-04-23 13:17:45 +00:00
64 lines
2.1 KiB
C
64 lines
2.1 KiB
C
![]() |
#ifndef _GAMEPACKETPARSER_H
|
||
|
#define _GAMEPACKETPARSER_H
|
||
|
#include "CommonNetwork.h"
|
||
|
|
||
|
namespace Core
|
||
|
{
|
||
|
namespace Network
|
||
|
{
|
||
|
namespace Packets
|
||
|
{
|
||
|
enum PacketParseResult
|
||
|
{
|
||
|
/// Dissected game packet successfully
|
||
|
Success,
|
||
|
|
||
|
/// Buffer is too short to dissect a message.
|
||
|
Incomplete,
|
||
|
|
||
|
/// Invalid data detected.
|
||
|
Malformed
|
||
|
};
|
||
|
|
||
|
/// Read packet header from buffer with given offset.
|
||
|
/// Buffer with given offset must be pointing to start of the new FFXIV packet.
|
||
|
PacketParseResult getHeader(
|
||
|
const std::vector< uint8_t > &buffer,
|
||
|
const uint32_t offset,
|
||
|
FFXIVARR_PACKET_HEADER &header
|
||
|
);
|
||
|
|
||
|
/// Read packet header from buffer with given offset.
|
||
|
/// Buffer with given offset must be pointing to start of FFXIVARR_PACKET_SEGMENT_HEADER data.
|
||
|
/// Keep in mind that this function does check for data validity. Call checkSegmentHeader() if that's needed.
|
||
|
PacketParseResult getSegmentHeader(
|
||
|
const std::vector< uint8_t > &buffer,
|
||
|
const uint32_t offset,
|
||
|
FFXIVARR_PACKET_SEGMENT_HEADER &header
|
||
|
);
|
||
|
|
||
|
/// Read packets from the buffer with given offset.
|
||
|
/// Buffer with given offset must be pointing to end of FFXIVARR_PACKET_HEADER data.
|
||
|
PacketParseResult getPackets(
|
||
|
const std::vector< uint8_t > &buffer,
|
||
|
const uint32_t offset,
|
||
|
const FFXIVARR_PACKET_HEADER &header,
|
||
|
std::vector< Packets::FFXIVARR_PACKET_RAW > &packets);
|
||
|
|
||
|
/// Read single packet from the buffer with given offset.
|
||
|
/// Buffer with an offset must be pointing to start of FFXIVARR_PACKET_SEGMENT_HEADER data.
|
||
|
PacketParseResult getPacket(
|
||
|
const std::vector< uint8_t > &buffer,
|
||
|
const uint32_t offset,
|
||
|
FFXIVARR_PACKET_RAW &packet
|
||
|
);
|
||
|
|
||
|
bool checkHeader(const FFXIVARR_PACKET_HEADER &header);
|
||
|
bool checkSegmentHeader(const FFXIVARR_PACKET_SEGMENT_HEADER &header);
|
||
|
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
|
||
|
#endif
|