37class OPENDHT_PUBLIC PeerDiscovery
40 static constexpr in_port_t DEFAULT_PORT = 8888;
41 using ServiceDiscoveredCallback = std::function<void(msgpack::object &&,
SockAddr &&)>;
43 PeerDiscovery(in_port_t port = DEFAULT_PORT,
44 std::shared_ptr<asio::io_context> ioContext = {},
45 std::shared_ptr<Logger> logger = {});
52 void startDiscovery(
const std::string &type, ServiceDiscoveredCallback callback);
57 cb(ob.as<T>(), std::move(addr));
64 void startPublish(
const std::string &type,
const msgpack::sbuffer &pack_buf);
65 void startPublish(sa_family_t domain,
const std::string &type,
const msgpack::sbuffer &pack_buf);
68 void startPublish(
const std::string &type,
const T &
object) {
70 msgpack::pack(buf,
object);
88 bool stopPublish(sa_family_t domain,
const std::string &type);
90 void connectivityChanged();
92 void stopConnectivityChanged();
95 class DomainPeerDiscovery;
96 std::unique_ptr<DomainPeerDiscovery> peerDiscovery4_;
97 std::unique_ptr<DomainPeerDiscovery> peerDiscovery6_;
98 std::shared_ptr<asio::io_context> ioContext_;
99 std::thread ioRunnner_;