summaryrefslogtreecommitdiffhomepage
path: root/dev/lib/net/network.hpp
diff options
context:
space:
mode:
authorAmlal El Mahrouss <amlal@nekernel.org>2025-09-04 11:25:04 +0200
committerGitHub <noreply@github.com>2025-09-04 11:25:04 +0200
commit6789dd7d88a192e3f55b95798cb393e7d12f368a (patch)
tree7f04815ad5214f97d0fb2becceceed7ce8089b3d /dev/lib/net/network.hpp
parent443588a42fe9cf48b5f63184b94afe483cb0e761 (diff)
parentfda7082c54ad46a56ac885d4686b82bad8dbc7c9 (diff)
Merge pull request #4 from amlel-el-mahrouss/devv1.0.43
OCL — v1.0.43
Diffstat (limited to 'dev/lib/net/network.hpp')
-rw-r--r--dev/lib/net/network.hpp137
1 files changed, 0 insertions, 137 deletions
diff --git a/dev/lib/net/network.hpp b/dev/lib/net/network.hpp
deleted file mode 100644
index 67f3740..0000000
--- a/dev/lib/net/network.hpp
+++ /dev/null
@@ -1,137 +0,0 @@
-/*
- * File: net/network.hpp
- * Purpose: Modem concept in modern C++
- * Author: Amlal El Mahrouss (founder@snu.systems)
- * Copyright 2025, Amlal El Mahrouss and SNU Systems Corp.
- */
-
-#ifndef _SNU_NET_NETWORK_HPP
-#define _SNU_NET_NETWORK_HPP
-
-#include <unistd.h>
-#include <arpa/inet.h>
-#include <sys/socket.h>
-#include <string>
-#include <utility>
-#include <cstddef>
-
-#define SNU_MODEM_INTERFACE : protected snu::net::basic_modem
-
-namespace snu::net
-{
- template <typename char_type>
- class basic_modem;
-
- typedef int64_t socket_type;
-
- /// @brief Delivery modem concept, a container to read and write on a network stream.
- template <typename char_type>
- class basic_modem
- {
- public:
- explicit basic_modem() = default;
- virtual ~basic_modem() = default;
-
- basic_modem& operator=(const basic_modem&) = default;
- basic_modem(const basic_modem&) = default;
-
- static constexpr auto local_address_ip6 = "127.0.0.1";
- static constexpr auto local_address_ip4 = "::1";
-
- static constexpr auto backlog_count = 18U;
-
- socket_type fd_{};
-
- bool is_valid() const noexcept
- {
- return this->fd_ != -1;
- }
-
- template <typename ptr_type>
- bool receive(ptr_type& out, std::size_t len) noexcept
- {
- static_assert(std::is_pointer<ptr_type>::value, "ptr_type is not a pointer!");
-
- if (!out)
- return false;
-
- if (!len)
- return false;
-
- auto ret = ::recv(fd_, out, len, 0);
-
- return ret > 0;
- }
-
- template <typename ptr_type>
- bool transmit(ptr_type& out, std::size_t len) noexcept
- {
- static_assert(std::is_pointer<ptr_type>::value, "char_type is not a pointer!");
-
- if (!out)
- return false;
-
- if (!len)
- return false;
-
- auto ret = ::send(fd_, out, len, 0);
-
- return ret > 0;
- }
-
- template <typename ptr_type>
- bool transmit(std::basic_string<ptr_type> out) noexcept
- {
- if (out.empty())
- return false;
-
- auto ret = ::send(fd_, out.data(), out.size(), 0);
-
- return ret > 0;
- }
-
- template <int32_t af, int32_t kind, int32_t ip_proto, int32_t port>
- bool construct(const char* addr = basic_modem::local_address_ip4, const bool& is_server = false) noexcept
- {
- static_assert(af != 0, "Address family is zero");
- static_assert(kind != 0, "Type is zero");
-
- fd_ = ::socket(af, kind, ip_proto);
-
- if (fd_ == -1)
- return false;
-
- struct sockaddr_in addr_
- {
- };
-
- addr_.sin_addr.s_addr = ::inet_addr(addr);
- addr_.sin_port = port;
-
- if (!is_server)
- {
- const auto ret = ::connect(fd_, reinterpret_cast<struct sockaddr*>(&addr_), sizeof(decltype(addr_)));
- return ret == 0;
- }
-
- ::listen(fd_, basic_modem::backlog_count);
-
- return true;
- }
-
- bool destroy() noexcept
- {
- if (!fd_)
- return false;
-
- ::shutdown(fd_, SHUT_RDWR);
- ::close(fd_);
-
- fd_ = 0U;
-
- return true;
- }
- };
-} // namespace snu::net
-
-#endif // ifndef _SNU_NET_NETWORK_HPP