working commit

This commit is contained in:
2026-04-23 14:53:39 +02:00
parent fa1c3ce9e2
commit cf45872d91
12 changed files with 1786 additions and 26 deletions
+49
View File
@@ -0,0 +1,49 @@
extern "C" {
#include <arpa/inet.h>
}
#include <expected>
#include <string>
#include <cstring>
#include <iostream>
#include <format>
#include <cstdint>
#include <header.hpp>
Header::Header(const uint32_t ipSize) {
pSize = ipSize;
}
Header::Header(void) {
pSize = 0;
}
std::string Header::Encode() {
std::string buffer, tmp;
auto magic = htonl(MAGIC);
tmp = std::string(reinterpret_cast<const char*>(&magic), sizeof(magic));
buffer.append(tmp);
auto size = htonl(pSize);
tmp = std::string(reinterpret_cast<const char*>(&size), sizeof(size));
buffer.append(tmp);
return buffer;
}
std::expected<void, std::string> Header::Decode(const std::string rawHeader) {
uint32_t tmp;
std::memcpy(&tmp, rawHeader.data(), sizeof(uint32_t));
auto magic = ntohl(tmp);
if (magic != MAGIC) {
return std::unexpected("Wrong magic code");
}
std::memcpy(&tmp, rawHeader.data() + sizeof(uint32_t), sizeof(uint32_t));
pSize = ntohl(tmp);
return {};
}
uint32_t Header::PacketSize() {
return pSize;
}
+16
View File
@@ -0,0 +1,16 @@
#include <string>
const uint32_t MAGIC = 0xABBA;
class Header {
private:
uint32_t pSize = 0;
public:
Header(const uint32_t pSize);
Header(void);
std::string Encode(void);
std::expected<void, std::string> Decode(const std::string buffer);
uint32_t PacketSize(void);
};
+20
View File
@@ -0,0 +1,20 @@
#include <expected>
#include <string>
#include <cstring>
#include <iostream>
#include <format>
#include <header.hpp>
int main(int argc, char** argv) {
uint32_t size =
Header primary(1021);
auto rawHeader = primary.Encode();
Header second;
second.Decode(rawHeader);
std::cout << std::format("{}\n", second.PacketSize());
assert
}