From 441cf81acf9dff087addfa8d01a61e4513b1dd6e Mon Sep 17 00:00:00 2001 From: dec05eba Date: Thu, 31 May 2018 01:13:15 +0200 Subject: Starting... --- include/DirectConnection.hpp | 49 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 include/DirectConnection.hpp (limited to 'include/DirectConnection.hpp') diff --git a/include/DirectConnection.hpp b/include/DirectConnection.hpp new file mode 100644 index 0000000..c11871f --- /dev/null +++ b/include/DirectConnection.hpp @@ -0,0 +1,49 @@ +#pragma once + +#include +#include "types.hpp" +#include "utils.hpp" + +struct addrinfo; + +namespace sibs +{ + class InvalidAddressException : public std::runtime_error + { + public: + InvalidAddressException(const std::string &errMsg) : std::runtime_error(errMsg) {} + }; + + class ConnectionException : public std::runtime_error + { + public: + ConnectionException(const std::string &errMsg) : std::runtime_error(errMsg) {} + }; + + class Ipv4 + { + DISABLE_COPY(Ipv4) + public: + // Throws InvalidAddressException on error + Ipv4(const char *ip, u16 port); + ~Ipv4(); + + struct addrinfo *address; + }; + + class DirectConnections + { + DISABLE_COPY(DirectConnections) + public: + DirectConnections(); + ~DirectConnections(); + + void connect(const Ipv4 &address); + private: + void init(); + void cleanup(); + private: + int eid; + int mySocket; + }; +} -- cgit v1.2.3