Network
ll/api/network/ Β· Common
Overview
The Network module enables registration and handling of custom network packets between client and server.
| Header |
Description |
ll/api/network/packet/PacketBase.h |
CRTP base class for custom packets |
ll/api/network/packet/PacketHandlerBase.h |
CRTP base class for packet handlers |
Key Classes
PacketBase
Base class for custom packets using CRTP (Curiously Recurring Template Pattern).
| C++ |
|---|
1
2
3
4
5
6
7
8
9
10
11
12 | namespace ll::network {
template <class Derived>
class PacketBase {
public:
virtual void write(BinaryStream& stream);
virtual void read(BinaryStream& stream);
void sendToServer();
void sendToClient(NetworkIdentifier const& id, SubClientId clientId);
void sendBroadcast();
};
}
|
PacketHandlerBase
Base class for packet handlers using CRTP.
| C++ |
|---|
| namespace ll::network {
template <class Derived, class PacketType>
class PacketHandlerBase {
public:
virtual void handle(NetworkIdentifier const& source, PacketType& packet) = 0;
};
}
|
Usage
Defining a Custom Packet
| C++ |
|---|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 | #include "ll/api/network/packet/PacketBase.h"
class MyCustomPacket : public ll::network::PacketBase<MyCustomPacket> {
int data;
public:
void setData(int value) { data = value; }
int getData() const { return data; }
void write(BinaryStream& stream) override {
stream.writeVarInt(data);
}
void read(BinaryStream& stream) override {
data = stream.readVarInt();
}
};
|
Defining a Packet Handler
| C++ |
|---|
| #include "ll/api/network/packet/PacketHandlerBase.h"
class MyPacketHandler : public ll::network::PacketHandlerBase<MyPacketHandler, MyCustomPacket> {
public:
void handle(NetworkIdentifier const& source, MyCustomPacket& packet) override {
// Handle the packet
auto data = packet.getData();
// Process data...
}
};
|
Sending Packets
| C++ |
|---|
1
2
3
4
5
6
7
8
9
10
11
12
13 | void sendCustomPacket() {
MyCustomPacket packet;
packet.setData(42);
// Send to server (from client)
packet.sendToServer();
// Or send to specific client (from server)
// packet.sendToClient(networkId, subClientId);
// Or broadcast to all clients (from server)
// packet.sendBroadcast();
}
|
- Event β Network events for packet interception