44 :
public std::enable_shared_from_this<ParallelTcpConnector> {
45 struct private_init {};
62 static std::shared_ptr<ParallelTcpConnector>
Create(
66 bool ipv4Only =
false) {
67 if (
loop.IsClosing()) {
70 return std::make_shared<ParallelTcpConnector>(
loop, reconnectRate, logger,
72 ipv4Only, private_init{});
79 bool ipv4Only,
const private_init&);
97 std::span<
const std::pair<std::string, unsigned int>> servers);
114 bool IsConnected()
const {
return m_isConnected || m_servers.empty(); }
123 std::shared_ptr<wpi::net::uv::Timer> m_reconnectTimer;
124 std::vector<std::pair<std::string, unsigned int>> m_servers;
125 std::vector<std::weak_ptr<wpi::net::uv::GetAddrInfoReq>> m_resolvers;
126 std::vector<std::pair<sockaddr_storage, std::weak_ptr<wpi::net::uv::Tcp>>>
128 bool m_isConnected{
false};
ParallelTcpConnector(wpi::net::uv::Loop &loop, wpi::net::uv::Timer::Time reconnectRate, wpi::util::Logger &logger, std::function< void(wpi::net::uv::Tcp &tcp)> connected, bool ipv4Only, const private_init &)
ParallelTcpConnector(const ParallelTcpConnector &)=delete
void Disconnected()
Tells the parallel connector that the current connection has terminated and it is necessary to start ...
void Close()
Closes resources, canceling all pending action attempts.
void SetServers(std::span< const std::pair< std::string, unsigned int > > servers)
Changes the servers/ports to connect to.
ParallelTcpConnector & operator=(const ParallelTcpConnector &)=delete
static std::shared_ptr< ParallelTcpConnector > Create(wpi::net::uv::Loop &loop, wpi::net::uv::Timer::Time reconnectRate, wpi::util::Logger &logger, std::function< void(wpi::net::uv::Tcp &tcp)> connected, bool ipv4Only=false)
Create.
Definition ParallelTcpConnector.hpp:62
void Succeeded(wpi::net::uv::Tcp &tcp)
Tells the parallel connector that a particular connection has succeeded and it should stop trying to ...
GetAddrInfo request.
Definition GetAddrInfo.hpp:26
Event loop.
Definition Loop.hpp:35
TCP handle.
Definition Tcp.hpp:26
Timer handle.
Definition Timer.hpp:25
std::chrono::duration< uint64_t, std::milli > Time
Definition Timer.hpp:29
Definition Prepare.hpp:14
Definition raw_socket_ostream.hpp:9
Definition raw_os_ostream.hpp:19