3 #include "fly/concepts/concepts.hpp"
16 concept IPAddress = fly::SameAsAny<T, IPv4Address, IPv6Address>;
18 template <IPAddress IPAddressType>
25 concept IPEndpoint = fly::SameAsAny<T, Endpoint<IPv4Address>, Endpoint<IPv6Address>>;
27 template <IPEndpo
int Endpo
intType>
30 template <IPEndpo
int Endpo
intType>
33 template <IPEndpo
int Endpo
intType>
40 concept Socket = fly::SameAsAny<
42 ListenSocket<Endpoint<IPv4Address>>,
43 ListenSocket<Endpoint<IPv6Address>>,
44 TcpSocket<Endpoint<IPv4Address>>,
45 TcpSocket<Endpoint<IPv6Address>>,
46 UdpSocket<Endpoint<IPv4Address>>,
47 UdpSocket<Endpoint<IPv6Address>>>;
53 template <
typename T,
typename SocketType>
54 concept SocketNotification = requires(T callback)
56 requires Socket<SocketType>;
57 callback(std::declval<std::shared_ptr<SocketType>>());