18 template <
class ConnType>
35 size_t , uint8_t*& , sockaddr )
48 const std::string&
host,
const std::string& service)
85 const sockaddr* addr,
int address_family = AF_INET)
87 constexpr auto buf_len = INET6_ADDRSTRLEN;
88 char buf[buf_len] = {};
91 if (address_family == AF_INET6)
93 const auto*
const in6 =
reinterpret_cast<const sockaddr_in6*
>(addr);
94 if ((rc = uv_ip6_name(in6, buf, buf_len)) != 0)
100 fmt::format(
"[{}]", buf), fmt::format(
"{}", ntohs(in6->sin6_port))};
103 assert(address_family == AF_INET);
104 const auto*
const in4 =
reinterpret_cast<const sockaddr_in*
>(addr);
105 if ((rc = uv_ip4_name(in4, buf, buf_len)) != 0)
107 LOG_FAIL_FMT(
"uv_ip4_name failed: {}", uv_strerror(rc));
110 return {buf, fmt::format(
"{}", ntohs(in4->sin_port))};
Callback service for user-specific behaviour for TCP and UDP connections.
Definition socket.h:20
virtual bool on_read(size_t, uint8_t *&, sockaddr)
Definition socket.h:34
virtual void on_connect()
Definition socket.h:52
virtual ~SocketBehaviour()=default
virtual void on_connect_failed()
Definition socket.h:66
virtual void on_bind_failed()
Failure loggers for when things go wrong, but not fatal.
Definition socket.h:62
virtual void on_disconnect()
Definition socket.h:56
virtual void on_start(int64_t)
To be implemented by all servers (after registration)
Definition socket.h:44
const char * name
Definition socket.h:22
virtual void on_resolve_failed()
Failure loggers for when things go wrong, fataly.
Definition socket.h:72
virtual void on_accept(ConnType &)
To be implemented by servers with connections.
Definition socket.h:41
virtual void on_listen_failed()
Definition socket.h:77
virtual void on_listening(const std::string &host, const std::string &service)
Generic loggers for common reactions.
Definition socket.h:47
SocketBehaviour(const char *name, const char *conn_name)
Definition socket.h:26
const char * conn_name
Definition socket.h:23
#define LOG_INFO_FMT
Definition internal_logger.h:15
#define LOG_TRACE_FMT
Definition internal_logger.h:13
#define LOG_FATAL_FMT
Definition internal_logger.h:17
#define LOG_FAIL_FMT
Definition internal_logger.h:16
std::pair< std::string, std::string > addr_to_str(const sockaddr *addr, int address_family=AF_INET)
Definition socket.h:84
Definition configuration.h:14