Rename things
This commit is contained in:
parent
bbf053ed5a
commit
c94215ce05
4 changed files with 35 additions and 26 deletions
|
@ -16,6 +16,9 @@
|
|||
#include <QNetworkInterface>
|
||||
#include <QSocketNotifier>
|
||||
|
||||
namespace MdnsWrapper
|
||||
{
|
||||
|
||||
const char *recordTypeToStr(int rtype)
|
||||
{
|
||||
switch (rtype) {
|
||||
|
@ -56,7 +59,7 @@ static int query_callback(int sock, const struct sockaddr* from, size_t addrlen,
|
|||
|
||||
//qCDebug(KDECONNECT_CORE) << "Received DNS record of type" << recordTypeToStr(record_type) << "from socket" << sock << "with type" << entryTypeToStr(entry_type);
|
||||
|
||||
MdnsWrapper::MdnsService *discoveredService = (MdnsWrapper::MdnsService *)user_data;
|
||||
Discoverer::MdnsService *discoveredService = (Discoverer::MdnsService *)user_data;
|
||||
|
||||
switch (record_type) {
|
||||
case MDNS_RECORDTYPE_PTR: {
|
||||
|
@ -104,7 +107,7 @@ static int query_callback(int sock, const struct sockaddr* from, size_t addrlen,
|
|||
return 0;
|
||||
}
|
||||
|
||||
void MdnsWrapper::startDiscovering(const QString &serviceType)
|
||||
void Discoverer::startDiscovering(const QString &serviceType)
|
||||
{
|
||||
int num_sockets = listenForQueryResponses();
|
||||
if (num_sockets <= 0) {
|
||||
|
@ -114,12 +117,12 @@ void MdnsWrapper::startDiscovering(const QString &serviceType)
|
|||
sendQuery(serviceType);
|
||||
}
|
||||
|
||||
void MdnsWrapper::stopDiscovering()
|
||||
void Discoverer::stopDiscovering()
|
||||
{
|
||||
stopListeningForQueryResponses();
|
||||
}
|
||||
|
||||
void MdnsWrapper::stopListeningForQueryResponses()
|
||||
void Discoverer::stopListeningForQueryResponses()
|
||||
{
|
||||
qCDebug(KDECONNECT_CORE) << "Closing" << responseSocketNotifiers.size() << "sockets";
|
||||
for (QSocketNotifier *socketNotifier : responseSocketNotifiers) {
|
||||
|
@ -129,7 +132,7 @@ void MdnsWrapper::stopListeningForQueryResponses()
|
|||
responseSocketNotifiers.clear();
|
||||
}
|
||||
|
||||
int MdnsWrapper::listenForQueryResponses()
|
||||
int Discoverer::listenForQueryResponses()
|
||||
{
|
||||
// Open a socket for each interface
|
||||
QVector<int> sockets;
|
||||
|
@ -176,7 +179,7 @@ int MdnsWrapper::listenForQueryResponses()
|
|||
return sockets.size();
|
||||
}
|
||||
|
||||
void MdnsWrapper::sendQuery(const QString &serviceType)
|
||||
void Discoverer::sendQuery(const QString &serviceType)
|
||||
{
|
||||
qCDebug(KDECONNECT_CORE) << "Sending MDNS query for service" << serviceType;
|
||||
|
||||
|
@ -204,7 +207,7 @@ static mdns_string_t createMdnsString(const QByteArray &str)
|
|||
return mdns_string_t{str.constData(), (size_t)str.length()};
|
||||
}
|
||||
|
||||
static mdns_record_t createMdnsRecord(const MdnsServiceAnnouncer::AnnouncedInfo &self,
|
||||
static mdns_record_t createMdnsRecord(const Announcer::AnnouncedInfo &self,
|
||||
mdns_record_type_t record_type,
|
||||
QHash<QByteArray, QByteArray>::const_iterator txtIterator = {})
|
||||
{
|
||||
|
@ -252,9 +255,9 @@ static int service_callback(int sock, const struct sockaddr* from, size_t addrle
|
|||
Q_UNUSED(name_length);
|
||||
Q_UNUSED(record_offset);
|
||||
Q_UNUSED(record_length);
|
||||
static char sendbuffer[2048];
|
||||
static char sendbuffer[2024];
|
||||
|
||||
const MdnsServiceAnnouncer::AnnouncedInfo &self = *((MdnsServiceAnnouncer::AnnouncedInfo *)user_data);
|
||||
const Announcer::AnnouncedInfo &self = *((Announcer::AnnouncedInfo *)user_data);
|
||||
|
||||
if (entry_type != MDNS_ENTRYTYPE_QUESTION) {
|
||||
return 0;
|
||||
|
@ -419,7 +422,7 @@ static int service_callback(int sock, const struct sockaddr* from, size_t addrle
|
|||
// Open sockets to listen to incoming mDNS queries on port 5353
|
||||
// When recieving, each socket can recieve data from all network interfaces
|
||||
// Thus we only need to open one socket for each address family
|
||||
int MdnsServiceAnnouncer::listenForQueries()
|
||||
int Announcer::listenForQueries()
|
||||
{
|
||||
auto callback = [this](QSocketDescriptor socket) {
|
||||
static char buffer[2048];
|
||||
|
@ -469,7 +472,7 @@ int MdnsServiceAnnouncer::listenForQueries()
|
|||
return numSockets;
|
||||
}
|
||||
|
||||
MdnsServiceAnnouncer::MdnsServiceAnnouncer(const QString &serviceName, const QString &serviceType, uint16_t port)
|
||||
Announcer::Announcer(const QString &serviceName, const QString &serviceType, uint16_t port)
|
||||
{
|
||||
self.serviceType = serviceType.toLatin1();
|
||||
if (!self.serviceType.endsWith('.')) {
|
||||
|
@ -483,7 +486,7 @@ MdnsServiceAnnouncer::MdnsServiceAnnouncer(const QString &serviceName, const QSt
|
|||
memset(&self.address_ipv6, 0, sizeof(struct sockaddr_in6));
|
||||
}
|
||||
|
||||
void MdnsServiceAnnouncer::startAnnouncing()
|
||||
void Announcer::startAnnouncing()
|
||||
{
|
||||
int num_sockets = listenForQueries();
|
||||
if (num_sockets <= 0) {
|
||||
|
@ -493,14 +496,13 @@ void MdnsServiceAnnouncer::startAnnouncing()
|
|||
sendMulticastAnnounce(false);
|
||||
}
|
||||
|
||||
void MdnsServiceAnnouncer::stopAnnouncing()
|
||||
void Announcer::stopAnnouncing()
|
||||
{
|
||||
sendMulticastAnnounce(true);
|
||||
stopListeningForQueries();
|
||||
}
|
||||
|
||||
|
||||
void MdnsServiceAnnouncer::stopListeningForQueries()
|
||||
void Announcer::stopListeningForQueries()
|
||||
{
|
||||
if (socketNotifier != nullptr) {
|
||||
delete socketNotifier;
|
||||
|
@ -512,7 +514,7 @@ void MdnsServiceAnnouncer::stopListeningForQueries()
|
|||
}
|
||||
}
|
||||
|
||||
void MdnsServiceAnnouncer::sendMulticastAnnounce(bool isGoodbye)
|
||||
void Announcer::sendMulticastAnnounce(bool isGoodbye)
|
||||
{
|
||||
mdns_record_t ptr_record = createMdnsRecord(self, MDNS_RECORDTYPE_PTR);
|
||||
|
||||
|
@ -541,3 +543,5 @@ void MdnsServiceAnnouncer::sendMulticastAnnounce(bool isGoodbye)
|
|||
}
|
||||
|
||||
}
|
||||
|
||||
} // namespace MdnsWrapper
|
||||
|
|
|
@ -23,7 +23,10 @@
|
|||
* A Qt wrapper for the mdns.h header-only library
|
||||
* from https://github.com/mjansson/mdns
|
||||
*/
|
||||
class MdnsWrapper : public QObject
|
||||
namespace MdnsWrapper
|
||||
{
|
||||
|
||||
class Discoverer : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
|
@ -51,7 +54,7 @@ private:
|
|||
QVector<QSocketNotifier *> responseSocketNotifiers;
|
||||
};
|
||||
|
||||
class MdnsServiceAnnouncer : public QObject
|
||||
class Announcer : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
|
@ -60,14 +63,14 @@ public:
|
|||
QByteArray serviceType; // ie: "<_service-type>._tcp.local."
|
||||
QByteArray serviceInstance; // ie: "<service-name>.<_service-type>._tcp.local."
|
||||
QByteArray hostname; // ie: "<hostname>.local."
|
||||
uint16_t port;
|
||||
QHash<QByteArray, QByteArray> txtRecords;
|
||||
sockaddr_in address_ipv4;
|
||||
sockaddr_in6 address_ipv6;
|
||||
uint16_t port;
|
||||
QHash<QByteArray, QByteArray> txtRecords;
|
||||
};
|
||||
|
||||
// serviceType should be of the form _kdeconnect._udp.local
|
||||
MdnsServiceAnnouncer(const QString &serviceName, const QString &serviceType, uint16_t port);
|
||||
Announcer(const QString &serviceName, const QString &serviceType, uint16_t port);
|
||||
|
||||
void putTxtRecord(const QString &key, const QString &value)
|
||||
{
|
||||
|
@ -89,4 +92,6 @@ private:
|
|||
QSocketNotifier *socketNotifierV6 = nullptr;
|
||||
};
|
||||
|
||||
} // namespace MdnsWrapper
|
||||
|
||||
#endif
|
||||
|
|
|
@ -24,7 +24,7 @@ MdnsDiscovery::MdnsDiscovery(LanLinkProvider *lanLinkProvider)
|
|||
mdnsAnnouncer.putTxtRecord(QStringLiteral("type"), config.deviceType().toString());
|
||||
mdnsAnnouncer.putTxtRecord(QStringLiteral("protocol"), QString::number(NetworkPacket::s_protocolVersion));
|
||||
|
||||
connect(&mdnsWrapper, &MdnsWrapper::serviceFound, [lanLinkProvider](const MdnsWrapper::MdnsService &service) {
|
||||
connect(&mdnsDiscoverer, &MdnsWrapper::Discoverer::serviceFound, [lanLinkProvider](const MdnsWrapper::Discoverer::MdnsService &service) {
|
||||
if (KdeConnectConfig::instance().deviceId() == service.name) {
|
||||
qCDebug(KDECONNECT_CORE) << "Discovered myself, ignoring";
|
||||
return;
|
||||
|
@ -52,10 +52,10 @@ void MdnsDiscovery::stopAnnouncing()
|
|||
|
||||
void MdnsDiscovery::startDiscovering()
|
||||
{
|
||||
mdnsWrapper.startDiscovering(kServiceType);
|
||||
mdnsDiscoverer.startDiscovering(kServiceType);
|
||||
}
|
||||
|
||||
void MdnsDiscovery::stopDiscovering()
|
||||
{
|
||||
mdnsWrapper.stopDiscovering();
|
||||
mdnsDiscoverer.stopDiscovering();
|
||||
}
|
||||
|
|
|
@ -31,8 +31,8 @@ public:
|
|||
|
||||
private:
|
||||
LanLinkProvider *lanLinkProvider = nullptr;
|
||||
MdnsWrapper mdnsWrapper;
|
||||
MdnsServiceAnnouncer mdnsAnnouncer;
|
||||
MdnsWrapper::Discoverer mdnsDiscoverer;
|
||||
MdnsWrapper::Announcer mdnsAnnouncer;
|
||||
};
|
||||
|
||||
#endif // KDECONNECT_SERVER_H
|
||||
|
|
Loading…
Reference in a new issue