aboutsummaryrefslogtreecommitdiff
path: root/include/DirectConnection.hpp
diff options
context:
space:
mode:
authordec05eba <dec05eba@protonmail.com>2018-05-31 01:13:15 +0200
committerdec05eba <dec05eba@protonmail.com>2020-08-18 22:56:48 +0200
commit441cf81acf9dff087addfa8d01a61e4513b1dd6e (patch)
tree67303309c3cd072c098a1d5dd18c1b0052b62754 /include/DirectConnection.hpp
parentfeafa6421484cbad6947822bcb641fee7ff2ee81 (diff)
Starting...
Diffstat (limited to 'include/DirectConnection.hpp')
-rw-r--r--include/DirectConnection.hpp49
1 files changed, 49 insertions, 0 deletions
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 <stdexcept>
+#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;
+ };
+}