timeline refactor, bit broken rn

This commit is contained in:
2025-11-09 10:35:21 -05:00
parent 1e35910b0a
commit e2799b1e58
41 changed files with 2034 additions and 1374 deletions

61
src/socket.h Normal file
View File

@@ -0,0 +1,61 @@
#pragma once
#include <cstddef>
#include <string>
#ifdef _WIN32
#include <winsock2.h>
#include <ws2tcpip.h>
using socket_handle = SOCKET;
constexpr socket_handle SOCKET_INVALID = INVALID_SOCKET;
#else
#include <arpa/inet.h>
#include <netinet/in.h>
#include <sys/socket.h>
#include <unistd.h>
using socket_handle = int;
constexpr socket_handle SOCKET_INVALID = -1;
#endif
namespace anm2ed
{
enum SocketRole
{
SERVER,
CLIENT
};
struct SocketAddress
{
std::string host{};
unsigned short port{};
};
class Socket
{
private:
socket_handle handle;
SocketRole role{};
public:
Socket();
~Socket();
Socket(const Socket&) = delete;
Socket& operator=(const Socket&) = delete;
Socket(Socket&& other) noexcept;
Socket& operator=(Socket&& other) noexcept;
bool open(SocketRole role);
bool bind(const SocketAddress&);
bool listen();
Socket accept();
bool connect(const SocketAddress&);
bool send(const void*, size_t);
bool receive(void*, size_t);
void close();
bool is_valid() const;
};
}