3 #include "fly/net/socket/concepts.hpp"
4 #include "fly/net/socket/types.hpp"
18 namespace fly::net::detail {
27 template <fly::net::IPEndpo
int Endpo
intType>
31 using endpoint_type = EndpointType;
32 using address_type =
typename EndpointType::address_type;
37 static constexpr
bool is_ipv4();
42 static constexpr
bool is_ipv6();
61 socket_type
handle()
const;
80 fly::net::IOMode
io_mode()
const;
102 bool bind(
const EndpointType &endpoint, BindMode mode)
const;
113 bool bind(std::string_view hostname, port_type port, BindMode mode)
const;
124 std::shared_ptr<fly::net::NetworkConfig> config,
126 fly::net::IOMode mode) noexcept;
137 const std::shared_ptr<fly::net::SocketService> &service,
138 std::shared_ptr<fly::net::NetworkConfig> config,
139 socket_type
handle) noexcept;
181 std::weak_ptr<fly::net::SocketService> m_weak_socket_service;
183 std::shared_ptr<fly::net::NetworkConfig> m_config;
185 socket_type m_socket_handle;
186 std::uint64_t m_socket_id;
187 fly::net::IOMode m_mode;
191 template <fly::net::IPEndpo
int Endpo
intType>
194 return EndpointType::is_ipv4();
198 template <fly::net::IPEndpo
int Endpo
intType>
201 return EndpointType::is_ipv6();
Definition: base_socket.hpp:29
virtual ~BaseSocket() noexcept
Definition: base_socket.cpp:59
fly::net::IOMode io_mode() const
Definition: base_socket.cpp:132
bool bind(const EndpointType &endpoint, BindMode mode) const
Definition: base_socket.cpp:162
static constexpr bool is_ipv4()
Definition: base_socket.hpp:192
std::size_t packet_size() const
Definition: base_socket.cpp:196
std::shared_ptr< fly::net::NetworkConfig > network_config() const
Definition: base_socket.cpp:189
BaseSocket(std::shared_ptr< fly::net::NetworkConfig > config, socket_type handle, fly::net::IOMode mode) noexcept
Definition: base_socket.cpp:22
socket_type handle() const
Definition: base_socket.cpp:102
bool set_io_mode(fly::net::IOMode mode)
Definition: base_socket.cpp:116
std::uint64_t socket_id() const
Definition: base_socket.cpp:109
void close()
Definition: base_socket.cpp:146
static std::optional< address_type > hostname_to_address(std::string_view hostname)
Definition: base_socket.cpp:81
BaseSocket & operator=(BaseSocket &&socket) noexcept
Definition: base_socket.cpp:66
bool is_open() const
Definition: base_socket.cpp:95
std::shared_ptr< fly::net::SocketService > socket_service() const
Definition: base_socket.cpp:182
static constexpr bool is_ipv6()
Definition: base_socket.hpp:199
std::optional< EndpointType > local_endpoint() const
Definition: base_socket.cpp:139