aboutsummaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
Diffstat (limited to 'include')
-rw-r--r--include/DirectConnection.hpp49
-rw-r--r--include/types.hpp22
-rwxr-xr-xinclude/utils.hpp6
3 files changed, 77 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;
+ };
+}
diff --git a/include/types.hpp b/include/types.hpp
new file mode 100644
index 0000000..0379100
--- /dev/null
+++ b/include/types.hpp
@@ -0,0 +1,22 @@
+#pragma once
+
+#include <cstdint>
+
+namespace sibs
+{
+ typedef int8_t i8;
+ typedef int16_t i16;
+ typedef int32_t i32;
+ typedef int64_t i64;
+
+ typedef uint8_t u8;
+ typedef uint16_t u16;
+ typedef uint32_t u32;
+ typedef uint64_t u64;
+
+ typedef float f32;
+ typedef double f64;
+
+ typedef intptr_t isize;
+ typedef uintptr_t usize;
+}
diff --git a/include/utils.hpp b/include/utils.hpp
new file mode 100755
index 0000000..01e478d
--- /dev/null
+++ b/include/utils.hpp
@@ -0,0 +1,6 @@
+#pragma once
+
+// Disable copying for a class or struct
+#define DISABLE_COPY(ClassName) \
+ ClassName(ClassName&) = delete; \
+ ClassName& operator = (ClassName&) = delete;