Split IP stuff into separate source and WIP implementation of name resolution.
This commit is contained in:
@@ -4,8 +4,7 @@
|
||||
#if !defined(MIJIN_NET_SOCKET_HPP_INCLUDED)
|
||||
#define MIJIN_NET_SOCKET_HPP_INCLUDED 1
|
||||
|
||||
#include <array>
|
||||
#include <variant>
|
||||
#include "./ip.hpp"
|
||||
#include "../detect.hpp"
|
||||
#include "../async/coroutine.hpp"
|
||||
#include "../container/optional.hpp"
|
||||
@@ -28,41 +27,6 @@ using socket_handle_t = int;
|
||||
inline constexpr socket_handle_t INVALID_SOCKET_HANDLE = -1;
|
||||
#endif
|
||||
|
||||
struct IPv4Address
|
||||
{
|
||||
std::array<std::uint8_t, 4> octets;
|
||||
|
||||
auto operator<=>(const IPv4Address&) const noexcept = default;
|
||||
|
||||
[[nodiscard]]
|
||||
static Optional<IPv4Address> fromString(std::string_view stringView) noexcept;
|
||||
};
|
||||
|
||||
struct IPv6Address
|
||||
{
|
||||
std::array<std::uint16_t, 8> hextets;
|
||||
|
||||
auto operator<=>(const IPv6Address&) const noexcept = default;
|
||||
|
||||
[[nodiscard]]
|
||||
static Optional<IPv6Address> fromString(std::string_view stringView) noexcept;
|
||||
};
|
||||
using ip_address_t = std::variant<IPv4Address, IPv6Address>;
|
||||
|
||||
[[nodiscard]]
|
||||
inline Optional<ip_address_t> ipAddressFromString(std::string_view stringView) noexcept
|
||||
{
|
||||
if (Optional<IPv4Address> ipv4Address = IPv4Address::fromString(stringView); !ipv4Address.empty())
|
||||
{
|
||||
return ip_address_t(*ipv4Address);
|
||||
}
|
||||
if (Optional<IPv6Address> ipv6Address = IPv6Address::fromString(stringView); !ipv6Address.empty())
|
||||
{
|
||||
return ip_address_t(*ipv6Address);
|
||||
}
|
||||
return NULL_OPTIONAL;
|
||||
}
|
||||
|
||||
class Socket
|
||||
{
|
||||
protected:
|
||||
|
||||
Reference in New Issue
Block a user