6 #include <QSocketNotifier>
12 #define LOC QString("Bonjour: ")
19 setenv(
"AVAHI_COMPAT_NOWARN",
"1", 1);
32 LOG(VB_GENERAL, LOG_INFO,
LOC +
33 QString(
"De-registering service '%1' on '%2'")
44 const QByteArray &name,
const QByteArray &txt)
48 LOG(VB_GENERAL, LOG_WARNING,
LOC +
"Service already registered.");
56 DNSServiceErrorType res =
57 DNSServiceRegister(&
m_dnssref, 0, 0, name.data(),
type.data(),
58 nullptr,
nullptr, qport, txt.size(), (
void*)txt.data(),
61 if (kDNSServiceErr_NoError != res)
63 LOG(VB_GENERAL, LOG_ERR,
LOC + QString(
"Error: %1").arg(res));
70 m_socket =
new QSocketNotifier(fd, QSocketNotifier::Read,
this);
72 connect(
m_socket, &QSocketNotifier::activated,
80 LOG(VB_GENERAL, LOG_ERR,
LOC +
"Failed to register service.");
90 DNSServiceErrorType res = DNSServiceProcessResult(
m_dnssref);
91 if (kDNSServiceErr_NoError != res)
92 LOG(VB_GENERAL, LOG_ERR,
LOC + QString(
"Read Error: %1").arg(res));
97 [[maybe_unused]] DNSServiceFlags flags,
98 DNSServiceErrorType errorcode,
99 const char *name,
const char *
type,
100 const char *domain,
void *
object)
106 bonjour->m_lock =
nullptr;
109 if (kDNSServiceErr_NoError != errorcode)
111 LOG(VB_GENERAL, LOG_ERR,
LOC + QString(
"Callback Error: %1")
116 LOG(VB_GENERAL, LOG_INFO,
LOC +
117 QString(
"Service registration complete: name '%1' type '%2' domain: '%3'")
118 .arg(QString::fromUtf8(name), QString::fromUtf8(
type),
119 QString::fromUtf8(domain)));
120 bonjour->m_name = name;
121 bonjour->m_type =
type;
125 LOG(VB_GENERAL, LOG_ERR,
LOC +
126 QString(
"BonjourCallback for unknown object."));
136 data.append(
"_rnd=");
138 data.append(rnd.toHex());
153 DNSServiceErrorType res =
161 if (kDNSServiceErr_NoError != res)
163 LOG(VB_GENERAL, LOG_ERR,
LOC +
164 QString(
"Error ReAnnounceService(%1): %2")
165 .arg(
m_name.data()).arg(res));
167 return kDNSServiceErr_NoError != res;