HikoGUI
A low latency retained GUI
Loading...
Searching...
No Matches
Packet.hpp
1
2
3
4#pragma once
5
6namespace tt {
7
10class Packet {
11 std::byte *data;
12 std::byte *data_end;
13 std::byte *first;
14 std::byte *last;
15 bool _pushed = false;
16
17public:
20 Packet(ssize_t nrBytes) noexcept {
21 data = new std::byte [nrBytes];
22 data_end = data + nrBytes;
23 first = data;
24 last = data;
25 }
26
27 ~Packet() noexcept {
28 delete [] data;
29 }
30
31 Packet(Packet const &rhs) noexcept = delete;
32 Packet operator=(Packet const &rhs) noexcept = delete;
33
34 Packet(Packet &&rhs) noexcept :
35 data(rhs.data), data_end(rhs.data_end), first(rhs.first), last(rhs.last) {
36 rhs.data = nullptr;
37 }
38
39
40 [[nodiscard]] std::byte *begin() noexcept {
41 return first;
42 }
43
44 [[nodiscard]] std::byte *end() noexcept {
45 return last;
46 }
47
50 [[nodiscard]] ssize_t readSize() const noexcept {
51 return last - first;
52 }
53
56 [[nodiscard]] ssize_t writeSize() const noexcept {
57 return data_end - last;
58 }
59
62 [[nodiscard]] bool pushed() const noexcept {
63 return _pushed;
64 }
65
68 void push() noexcept {
69 _pushed = true;
70 }
71
75 void write(ssize_t nrBytes) noexcept {
76 last += nrBytes;
77 tt_assume(last <= data_end);
78 }
79
83 void read(ssize_t nrBytes) noexcept {
84 first += nrBytes;
85 tt_assume(first <= last);
86 }
87};
88
89}
A network message or stream buffer.
Definition Packet.hpp:10
void read(ssize_t nrBytes) noexcept
Consume a read.
Definition Packet.hpp:83
void push() noexcept
Mark this packet to be pushed to the network.
Definition Packet.hpp:68
void write(ssize_t nrBytes) noexcept
Commit a write.
Definition Packet.hpp:75
ssize_t writeSize() const noexcept
How many bytes can still be written to this buffer.
Definition Packet.hpp:56
bool pushed() const noexcept
Should this packet be pushed onto the network.
Definition Packet.hpp:62
Packet(ssize_t nrBytes) noexcept
Allocate an empty packet of a certain size.
Definition Packet.hpp:20
ssize_t readSize() const noexcept
How many bytes can be read from this buffer.
Definition Packet.hpp:50