Skip to content

PacketBuffer is a C++14 header-only library designed specifically to be really fast at processing binary network packets.

License

Notifications You must be signed in to change notification settings

Rogiel/PacketBuffer

Repository files navigation

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!

About

PacketBuffer is a C++14 header-only library designed specifically to be really fast at processing binary network packets.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published