1
0
mirror of https://github.com/Rogiel/PacketBuffer synced 2025-12-06 00:13:04 +00:00
2017-05-30 14:48:02 -03:00
2017-05-30 14:48:02 -03:00
2017-05-30 14:48:02 -03:00
2017-05-30 14:48:02 -03:00
2017-05-30 14:48:02 -03:00
2017-05-30 14:48:02 -03:00
2017-05-30 14:48:02 -03:00
2017-05-30 14:48:02 -03:00
2017-05-30 14:48:02 -03:00
2017-05-30 14:48:02 -03:00

PacketBuffer - Lightning fast packet parsing library

PacketBuffer is a C++14 header-only library designed specifically to be really fast at processing binary network packets. It supports many of the C++ standard containers, including:

It also supports endian swapping the following types: uint8_t, int8_t, uint16_t, int16_t, uint32_t, int32_t, uint64_t, int64_t.

Getting Started

using namespace PacketBuffer;

std::stringstream ss;
Packer<std::stringstream> packer(ss);
packer.pack(uint8_t(100));

That's it!

But wait, you probably want something more than just packing a uint8_t, right? What about some custom structs?

Packing structs

using namespace PacketBuffer;

struct MyPacket {
    uint8_t id;
    std::string name;
    uint8_t age;
    
    template<typename Packer>
    void pack(Packer& packer) const { packer(id, name, age); }
    
    template<typename Unpacker>
    void unpack(Unpacker& unpacker) { unpacker(id, name, age); }
};

std::stringstream ss;
Packer<std::stringstream> packer(ss);

MyPacket packet;
packer.pack(packet);

Seriously, that is it! You can now serialize and deserialize your structure on any machine with whatever byte order it has!

Description
No description provided
Readme BSD-3-Clause 98 KiB
Languages
C++ 92.5%
C 5.3%
CMake 2.2%