diff --git a/tlib/src/net.cpp b/tlib/src/net.cpp index 36572ed3..95a4a01a 100644 --- a/tlib/src/net.cpp +++ b/tlib/src/net.cpp @@ -8,11 +8,13 @@ #include "tlib/net.hpp" #include "tlib/malloc.hpp" -tlib::packet::packet() : fd(0), payload(nullptr), index(0) { +tlib::packet::packet() + : fd(0), payload(nullptr), index(0) { //Nothing else to init } -tlib::packet::packet(packet&& rhs) : fd(rhs.fd), payload(rhs.payload), index(rhs.index) { +tlib::packet::packet(packet&& rhs) + : fd(rhs.fd), payload(rhs.payload), index(rhs.index) { rhs.payload = nullptr; } @@ -21,10 +23,10 @@ tlib::packet& tlib::packet::operator=(packet&& rhs) { this->fd = rhs.fd; this->payload = rhs.payload; this->index = rhs.index; - + rhs.payload = nullptr; } - + return *this; } @@ -40,7 +42,7 @@ std::expected tlib::socket_open(socket_domain domain, socket_type type, : [fd] "=m"(fd) : [domain] "g"(static_cast(domain)), [type] "g"(static_cast(type)), [protocol] "g"(static_cast(protocol)) : "rax", "rbx", "rcx", "rdx"); - + if (fd < 0) { return std::make_expected_from_error(-fd); } else { @@ -57,14 +59,14 @@ void tlib::socket_close(size_t fd) { std::expected tlib::prepare_packet(size_t socket_fd, void* desc) { auto buffer = malloc(2048); - + int64_t fd; uint64_t index; asm volatile("mov rax, 0x3002; mov rbx, %[socket]; mov rcx, %[desc]; mov rdx, %[buffer]; int 50; mov %[fd], rax; mov %[index], rbx;" : [fd] "=m"(fd), [index] "=m"(index) : [socket] "g"(socket_fd), [desc] "g"(reinterpret_cast(desc)), [buffer] "g"(reinterpret_cast(buffer)) : "rax", "rbx", "rcx", "rdx"); - + if (fd < 0) { free(buffer); return std::make_expected_from_error(-fd); @@ -79,13 +81,13 @@ std::expected tlib::prepare_packet(size_t socket_fd, void* desc) { std::expected tlib::finalize_packet(size_t socket_fd, const tlib::packet& p) { auto packet_fd = p.fd; - + int64_t code; asm volatile("mov rax, 0x3003; mov rbx, %[socket]; mov rcx, %[packet]; int 50; mov %[code], rax" : [code] "=m"(code) : [socket] "g"(socket_fd), [packet] "g"(packet_fd) : "rax", "rbx", "rcx"); - + if (code < 0) { return std::make_expected_from_error(-code); } else { @@ -99,7 +101,7 @@ std::expected tlib::listen(size_t socket_fd, bool l) { : [code] "=m"(code) : [socket] "g"(socket_fd), [listen] "g"(size_t(l)) : "rax", "rbx", "rcx"); - + if (code < 0) { return std::make_expected_from_error(-code); } else { @@ -113,7 +115,7 @@ std::expected tlib::client_bind(size_t socket_fd) { : [code] "=m"(code) : [socket] "g"(socket_fd) : "rax", "rbx", "rcx"); - + if (code < 0) { return std::make_unexpected(-code); } else { @@ -125,9 +127,9 @@ std::expected tlib::connect(size_t socket_fd, tlib::ip::address server, int64_t code; asm volatile("mov rax, 0x3008; mov rbx, %[socket]; mov rcx, %[ip]; mov rdx, %[port]; int 50; mov %[code], rax" : [code] "=m"(code) - : [socket] "g" (socket_fd), [ip] "g" (size_t(server.raw_address)), [port] "g" (port) + : [socket] "g"(socket_fd), [ip] "g"(size_t(server.raw_address)), [port] "g"(port) : "rax", "rbx", "rcx", "rdx"); - + if (code < 0) { return std::make_unexpected(-code); } else { @@ -139,9 +141,9 @@ std::expected tlib::disconnect(size_t socket_fd) { int64_t code; asm volatile("mov rax, 0x3009; mov rbx, %[socket]; int 50; mov %[code], rax" : [code] "=m"(code) - : [socket] "g" (socket_fd) + : [socket] "g"(socket_fd) : "rax", "rbx"); - + if (code < 0) { return std::make_unexpected(-code); } else { @@ -151,14 +153,14 @@ std::expected tlib::disconnect(size_t socket_fd) { std::expected tlib::wait_for_packet(size_t socket_fd) { auto buffer = malloc(2048); - + int64_t code; uint64_t payload; asm volatile("mov rax, 0x3005; mov rbx, %[socket]; mov rcx, %[buffer]; int 50; mov %[code], rax; mov %[payload], rbx;" : [payload] "=m"(payload), [code] "=m"(code) : [socket] "g"(socket_fd), [buffer] "g"(reinterpret_cast(buffer)) : "rax", "rbx", "rcx"); - + if (code < 0) { free(buffer); return std::make_expected_from_error(-code); @@ -172,14 +174,14 @@ std::expected tlib::wait_for_packet(size_t socket_fd) { std::expected tlib::wait_for_packet(size_t socket_fd, size_t ms) { auto buffer = malloc(2048); - + int64_t code; uint64_t payload; asm volatile("mov rax, 0x3006; mov rbx, %[socket]; mov rcx, %[buffer]; mov rdx, %[ms]; int 50; mov %[code], rax; mov %[payload], rbx;" : [payload] "=m"(payload), [code] "=m"(code) : [socket] "g"(socket_fd), [buffer] "g"(reinterpret_cast(buffer)), [ms] "g"(ms) : "rax", "rbx", "rcx"); - + if (code < 0) { free(buffer); return std::make_expected_from_error(-code); @@ -192,23 +194,23 @@ std::expected tlib::wait_for_packet(size_t socket_fd, size_t ms) { } tlib::socket::socket(socket_domain domain, socket_type type, socket_protocol protocol) -: domain(domain), type(type), protocol(protocol), fd(0), error_code(0) { + : domain(domain), type(type), protocol(protocol), fd(0), error_code(0) { auto open_status = tlib::socket_open(domain, type, protocol); - + if (open_status.valid()) { fd = *open_status; } else { error_code = open_status.error(); } - + local_port = 0; } tlib::socket::~socket() { - if(connected()){ + if (connected()) { disconnect(); } - + if (fd) { tlib::socket_close(fd); } @@ -242,7 +244,7 @@ void tlib::socket::listen(bool l) { if (!good() || !open()) { return; } - + auto status = tlib::listen(fd, l); if (!status) { error_code = status.error(); @@ -253,12 +255,12 @@ void tlib::socket::client_bind() { if (!good() || !open()) { return; } - + auto status = tlib::client_bind(fd); if (!status) { error_code = status.error(); } - + local_port = *status; } @@ -266,7 +268,7 @@ void tlib::socket::connect(tlib::ip::address server, size_t port) { if (!good() || !open()) { return; } - + auto status = tlib::connect(fd, server, port); if (status) { _connected = true; @@ -280,14 +282,14 @@ void tlib::socket::disconnect() { if (!good() || !open()) { return; } - - if(!connected()){ + + if (!connected()) { return; } - + auto status = tlib::disconnect(fd); - - if(status){ + + if (status) { _connected = false; } else { error_code = status.error(); @@ -298,9 +300,9 @@ tlib::packet tlib::socket::prepare_packet(void* desc) { if (!good() || !open()) { return tlib::packet(); } - + auto packet = tlib::prepare_packet(fd, desc); - + if (!packet) { error_code = packet.error(); return tlib::packet(); @@ -313,7 +315,7 @@ void tlib::socket::finalize_packet(const tlib::packet& p) { if (!good() || !open()) { return; } - + auto status = tlib::finalize_packet(fd, p); if (!status) { error_code = status.error(); @@ -324,9 +326,9 @@ tlib::packet tlib::socket::wait_for_packet() { if (!good() || !open()) { return tlib::packet(); } - + auto p = tlib::wait_for_packet(fd); - + if (!p) { error_code = p.error(); return tlib::packet(); @@ -339,9 +341,9 @@ tlib::packet tlib::socket::wait_for_packet(size_t ms) { if (!good() || !open()) { return tlib::packet(); } - + auto p = tlib::wait_for_packet(fd, ms); - + if (!p) { error_code = p.error(); return tlib::packet();