1 #ifndef UVW_TCP_INCLUDE_H
2 #define UVW_TCP_INCLUDE_H
11 #include "request.hpp"
22 enum class UVTCPFlags: std::underlying_type_t<uv_tcp_flags> {
23 IPV6ONLY = UV_TCP_IPV6ONLY
48 using Time = std::chrono::duration<unsigned int>;
49 using Bind = details::UVTCPFlags;
53 explicit TCPHandle(ConstructorAccess ca, std::shared_ptr<Loop> ref,
unsigned int f = {});
85 bool keepAlive(
bool enable =
false, Time time = Time{0});
138 template<
typename I = IPv4>
157 template<
typename I = IPv4>
164 template<
typename I = IPv4>
171 template<typename I =
IPv4>
199 template<typename I =
IPv4>
200 void connect(std::
string ip,
unsigned int port);
211 template<typename I =
IPv4>
228 enum { DEFAULT, FLAGS } tag;
241 extern template void TCPHandle::bind<IPv4>(std::string,
unsigned int, Flags<Bind>);
242 extern template void TCPHandle::bind<IPv6>(std::string,
unsigned int, Flags<Bind>);
244 extern template void TCPHandle::bind<IPv4>(Addr, Flags<Bind>);
245 extern template void TCPHandle::bind<IPv6>(Addr, Flags<Bind>);
247 extern template Addr TCPHandle::sock<IPv4>() const noexcept;
248 extern template Addr TCPHandle::sock<IPv6>() const noexcept;
250 extern template Addr TCPHandle::peer<IPv4>() const noexcept;
251 extern template Addr TCPHandle::peer<IPv6>() const noexcept;
253 extern template
void TCPHandle::connect<IPv4>(std::
string,
unsigned int);
254 extern template
void TCPHandle::connect<IPv6>(std::
string,
unsigned int);
256 extern template
void TCPHandle::connect<IPv4>(Addr addr);
257 extern template
void TCPHandle::connect<IPv6>(Addr addr);
273 #endif // UVW_TCP_INCLUDE_H