add simple inefficient server socket implementation (WIP)

This commit is contained in:
MihailRis
2024-11-27 15:38:57 +03:00
parent 233bc3174c
commit a72d36f53c
3 changed files with 164 additions and 11 deletions
+17
View File
@@ -34,6 +34,8 @@ namespace network {
class Connection {
public:
virtual ~Connection() {}
virtual void connect(runnable callback) = 0;
virtual int recv(char* buffer, size_t length) = 0;
virtual int send(const char* buffer, size_t length) = 0;
@@ -46,10 +48,21 @@ namespace network {
virtual ConnectionState getState() const = 0;
};
class TcpServer {
public:
virtual ~TcpServer() {}
virtual void startListen(consumer<u64id_t> handler) = 0;
virtual void close() = 0;
virtual bool isOpen() = 0;
};
class Network {
std::unique_ptr<Requests> requests;
std::unordered_map<u64id_t, std::shared_ptr<Connection>> connections;
u64id_t nextConnection = 1;
std::unordered_map<u64id_t, std::shared_ptr<TcpServer>> servers;
u64id_t nextServer = 1;
public:
Network(std::unique_ptr<Requests> requests);
~Network();
@@ -65,6 +78,10 @@ namespace network {
u64id_t connect(const std::string& address, int port, consumer<u64id_t> callback);
u64id_t openServer(int port, consumer<u64id_t> handler);
u64id_t addConnection(const std::shared_ptr<Connection>& connection);
size_t getTotalUpload() const;
size_t getTotalDownload() const;