TCPConnection TCPListen::accept(SocketName &out_end_point) { sockaddr_in peer_address = { 0 }; socklen_t peer_address_length = sizeof(sockaddr_in); int result = ::accept(impl->handle, reinterpret_cast<sockaddr*>(&peer_address), &peer_address_length); if (result == -1) { if (errno == EWOULDBLOCK) return TCPConnection(); else throw Exception("Error accepting from socket"); } out_end_point.from_sockaddr(AF_INET, reinterpret_cast<sockaddr*>(&peer_address), peer_address_length); return TCPConnection(std::make_shared<TCPSocket>(result)); }
TCPConnection TCPListen::accept(SocketName &out_end_point) { sockaddr_in peer_address = { 0 }; int peer_address_length = sizeof(sockaddr_in); SOCKET result = ::accept(impl->handle, reinterpret_cast<sockaddr*>(&peer_address), &peer_address_length); if (result == INVALID_SOCKET) { if (WSAGetLastError() == WSAEWOULDBLOCK) return TCPConnection(); else throw Exception("Error accepting from socket"); } out_end_point = SocketName(); out_end_point.from_sockaddr(AF_INET, reinterpret_cast<sockaddr*>(&peer_address), peer_address_length); return TCPConnection(std::make_shared<TCPSocket>(result)); }
void IODeviceProvider_TLSConnection::disconnect() { connected_device = TCPConnection(); tls_client = TLSClient(); }