25 #include "log_enable.h" 38 static constexpr in_port_t DEFAULT_PORT = 8888;
39 using ServiceDiscoveredCallback = std::function<void(msgpack::object&&, SockAddr&&)>;
41 PeerDiscovery(in_port_t port = DEFAULT_PORT, std::shared_ptr<asio::io_context> ioContext = {}, std::shared_ptr<Logger> logger = {});
47 void startDiscovery(
const std::string &type, ServiceDiscoveredCallback callback);
50 void startDiscovery(
const std::string &type, std::function<
void(T&&,
SockAddr&&)> cb) {
51 startDiscovery(type, [cb](msgpack::object&& ob,
SockAddr&& addr) {
52 cb(ob.as<T>(), std::move(addr));
59 void startPublish(
const std::string &type,
const msgpack::sbuffer &pack_buf);
60 void startPublish(sa_family_t domain,
const std::string &type,
const msgpack::sbuffer &pack_buf);
63 void startPublish(
const std::string &type,
const T&
object) {
65 msgpack::pack(buf,
object);
66 startPublish(type, buf);
77 bool stopDiscovery(
const std::string &type);
82 bool stopPublish(
const std::string &type);
83 bool stopPublish(sa_family_t domain,
const std::string &type);
85 void connectivityChanged();
88 class DomainPeerDiscovery;
89 std::unique_ptr<DomainPeerDiscovery> peerDiscovery4_;
90 std::unique_ptr<DomainPeerDiscovery> peerDiscovery6_;
91 std::shared_ptr<asio::io_context> ioContext_;
92 std::thread ioRunnner_;