40 static constexpr in_port_t DEFAULT_PORT = 8888;
41 using ServiceDiscoveredCallback = std::function<void(msgpack::object &&,
SockAddr &&)>;
44 std::shared_ptr<asio::io_context> ioContext = {},
45 std::shared_ptr<Logger> logger = {});
52 void startDiscovery(
const std::string &type, ServiceDiscoveredCallback callback);
55 void startDiscovery(
const std::string &type, std::function<
void(T &&,
SockAddr &&)> cb) {
56 startDiscovery(type, [cb](msgpack::object &&ob,
SockAddr &&addr) {
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);
71 startPublish(type, buf);
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_;