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);
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_;
bool stopDiscovery(const std::string &type)
bool stopPublish(const std::string &type)
void startDiscovery(const std::string &type, ServiceDiscoveredCallback callback)
void startPublish(const std::string &type, const msgpack::sbuffer &pack_buf)