18 bool operator==(
const Host &h)
const {
return name == h.name && ipv4 == h.ipv4 && llipv4 == h.llipv4 && misc == h.misc && port == h.port; }
19 bool operator!=(
const Host &h)
const {
return !operator==(h); }
22 static inline MulticastDns *instance() {
return instance_.value; }
23 MulticastDns(
const std::string &serviceType = {});
27 int sendQuery(
int timeout = 0);
29 const std::vector<Host> hosts()
const {
30 std::lock_guard<std::mutex> lock(mutex);
34 void setServiceType(
const std::string &_serviceType);
35 std::string serviceType() {
return serviceType_; };
37 bool startService(
const std::string &hostname,
const std::string &llip,
const std::string &misc, uint16_t port);
38 void stopService(
bool send_goodbye =
true);
39 bool serviceRunning();
41 bool startQuerier(
int timeout = 60);
43 bool querierRunning();
45 void append_(
const Host &host);
47 FunctionConnectorProtected<MulticastDns>::Connector<
const Host &> hostAdded;
48 FunctionConnectorProtected<MulticastDns>::Connector<
const Host &> hostChanged;
49 FunctionConnectorProtected<MulticastDns>::Connector<
const Host &> hostRemoved;
53 void servicePollEvent(
int fd);
54 void querierPollEvent(
int fd);
55 void querierTimerEvent();
58 std::vector<int> sfds;
59 std::vector<int> qfds;
60 std::vector<Host> hosts_;
61 std::string serviceType_;
62 int sendQuery(
const std::vector<std::pair<std::string, std::string>> &list,
int timeout = 0);
64 mutable std::mutex mutex;