forked from jbagg/QtZeroConf
Bonjour - change QSocketNotifier pointers to QSharedPointer
This commit is contained in:
32
bonjour.cpp
32
bonjour.cpp
@ -47,8 +47,7 @@ void Resolver::cleanUp()
|
|||||||
{
|
{
|
||||||
DNSServiceRefDeallocate(DNSresolverRef);
|
DNSServiceRefDeallocate(DNSresolverRef);
|
||||||
DNSServiceRefDeallocate(DNSaddressRef);
|
DNSServiceRefDeallocate(DNSaddressRef);
|
||||||
delete resolverNotifier;
|
// the QSocketNotifiers resolverNotifier and addressNotifier get deleted when the QSharedPointer gets deleted along with the Resolver. No need to clear them here.
|
||||||
delete addressNotifier;
|
|
||||||
QString key = zcs->name() + QString::number(zcs->interfaceIndex());
|
QString key = zcs->name() + QString::number(zcs->interfaceIndex());
|
||||||
ref->resolvers.remove(key);
|
ref->resolvers.remove(key);
|
||||||
delete this;
|
delete this;
|
||||||
@ -93,8 +92,8 @@ void QZeroConfPrivate::resolve(QZeroConfService zcs)
|
|||||||
resolver->cleanUp();
|
resolver->cleanUp();
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
resolver->resolverNotifier = new QSocketNotifier(sockfd, QSocketNotifier::Read);
|
resolver->resolverNotifier = QSharedPointer<QSocketNotifier>::create(sockfd, QSocketNotifier::Read);
|
||||||
connect(resolver->resolverNotifier, &QSocketNotifier::activated, resolver, &Resolver::resolverReady);
|
connect(resolver->resolverNotifier.data(), &QSocketNotifier::activated, resolver, &Resolver::resolverReady);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
@ -128,7 +127,7 @@ void DNSSD_API QZeroConfPrivate::browseCallback(DNSServiceRef, DNSServiceFlags f
|
|||||||
key = name + QString::number(interfaceIndex);
|
key = name + QString::number(interfaceIndex);
|
||||||
if (flags & kDNSServiceFlagsAdd) {
|
if (flags & kDNSServiceFlagsAdd) {
|
||||||
if (!ref->pub->services.contains(key)) {
|
if (!ref->pub->services.contains(key)) {
|
||||||
zcs = QZeroConfService(new QZeroConfServiceData);
|
zcs = QZeroConfService::create();
|
||||||
zcs->m_name = name;
|
zcs->m_name = name;
|
||||||
zcs->m_type = type;
|
zcs->m_type = type;
|
||||||
zcs->m_domain = domain;
|
zcs->m_domain = domain;
|
||||||
@ -181,7 +180,6 @@ void DNSSD_API QZeroConfPrivate::resolverCallback(DNSServiceRef, DNSServiceFlags
|
|||||||
resolver->zcs->m_port = qFromBigEndian<quint16>(port);
|
resolver->zcs->m_port = qFromBigEndian<quint16>(port);
|
||||||
|
|
||||||
if (resolver->DNSaddressRef) {
|
if (resolver->DNSaddressRef) {
|
||||||
delete resolver->addressNotifier;
|
|
||||||
DNSServiceRefDeallocate(resolver->DNSaddressRef);
|
DNSServiceRefDeallocate(resolver->DNSaddressRef);
|
||||||
resolver->DNSaddressRef = nullptr;
|
resolver->DNSaddressRef = nullptr;
|
||||||
}
|
}
|
||||||
@ -192,8 +190,8 @@ void DNSSD_API QZeroConfPrivate::resolverCallback(DNSServiceRef, DNSServiceFlags
|
|||||||
resolver->cleanUp();
|
resolver->cleanUp();
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
resolver->addressNotifier = new QSocketNotifier(sockfd, QSocketNotifier::Read);
|
resolver->addressNotifier = QSharedPointer<QSocketNotifier>::create(sockfd, QSocketNotifier::Read);
|
||||||
connect(resolver->addressNotifier, &QSocketNotifier::activated, resolver, &Resolver::addressReady);
|
connect(resolver->addressNotifier.data(), &QSocketNotifier::activated, resolver, &Resolver::addressReady);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
@ -238,10 +236,7 @@ void QZeroConfPrivate::cleanUp(DNSServiceRef toClean)
|
|||||||
return;
|
return;
|
||||||
else if (toClean == browser) {
|
else if (toClean == browser) {
|
||||||
browser = nullptr;
|
browser = nullptr;
|
||||||
if (browserSocket) {
|
browserNotifier.clear();
|
||||||
delete browserSocket;
|
|
||||||
browserSocket = nullptr;
|
|
||||||
}
|
|
||||||
QMap<QString, QZeroConfService >::iterator i;
|
QMap<QString, QZeroConfService >::iterator i;
|
||||||
for (i = pub->services.begin(); i != pub->services.end(); i++) {
|
for (i = pub->services.begin(); i != pub->services.end(); i++) {
|
||||||
QString key = (*i)->name() + QString::number((*i)->interfaceIndex());
|
QString key = (*i)->name() + QString::number((*i)->interfaceIndex());
|
||||||
@ -252,10 +247,7 @@ void QZeroConfPrivate::cleanUp(DNSServiceRef toClean)
|
|||||||
}
|
}
|
||||||
else if (toClean == dnssRef) {
|
else if (toClean == dnssRef) {
|
||||||
dnssRef = nullptr;
|
dnssRef = nullptr;
|
||||||
if (bs) {
|
serviceNotifier.clear();
|
||||||
delete bs;
|
|
||||||
bs = nullptr;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
DNSServiceRefDeallocate(toClean);
|
DNSServiceRefDeallocate(toClean);
|
||||||
@ -299,8 +291,8 @@ void QZeroConf::startServicePublish(const char *name, const char *type, const ch
|
|||||||
emit error(QZeroConf::serviceRegistrationFailed);
|
emit error(QZeroConf::serviceRegistrationFailed);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
pri->bs = new QSocketNotifier(sockfd, QSocketNotifier::Read, this);
|
pri->serviceNotifier = QSharedPointer<QSocketNotifier>::create(sockfd, QSocketNotifier::Read, this);
|
||||||
connect(pri->bs, SIGNAL(activated(int)), pri, SLOT(bsRead()));
|
connect(pri->serviceNotifier.data(), &QSocketNotifier::activated, pri, &QZeroConfPrivate::bsRead);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
@ -366,8 +358,8 @@ void QZeroConf::startBrowser(QString type, QAbstractSocket::NetworkLayerProtocol
|
|||||||
emit error(QZeroConf::browserFailed);
|
emit error(QZeroConf::browserFailed);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
pri->browserSocket = new QSocketNotifier(sockfd, QSocketNotifier::Read, this);
|
pri->browserNotifier = QSharedPointer<QSocketNotifier>::create(sockfd, QSocketNotifier::Read, this);
|
||||||
connect(pri->browserSocket, SIGNAL(activated(int)), pri, SLOT(browserRead()));
|
connect(pri->browserNotifier.data(), &QSocketNotifier::activated, pri, &QZeroConfPrivate::browserRead);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
@ -47,8 +47,8 @@ public:
|
|||||||
QZeroConfPrivate *ref = nullptr;
|
QZeroConfPrivate *ref = nullptr;
|
||||||
DNSServiceRef DNSresolverRef = nullptr;
|
DNSServiceRef DNSresolverRef = nullptr;
|
||||||
DNSServiceRef DNSaddressRef = nullptr;
|
DNSServiceRef DNSaddressRef = nullptr;
|
||||||
QSocketNotifier *resolverNotifier = nullptr;
|
QSharedPointer <QSocketNotifier> resolverNotifier;
|
||||||
QSocketNotifier *addressNotifier = nullptr;
|
QSharedPointer <QSocketNotifier> addressNotifier;
|
||||||
|
|
||||||
public slots:
|
public slots:
|
||||||
void resolverReady();
|
void resolverReady();
|
||||||
@ -80,8 +80,8 @@ public:
|
|||||||
DNSServiceRef dnssRef = nullptr;
|
DNSServiceRef dnssRef = nullptr;
|
||||||
DNSServiceRef browser = nullptr;
|
DNSServiceRef browser = nullptr;
|
||||||
DNSServiceProtocol protocol;
|
DNSServiceProtocol protocol;
|
||||||
QSocketNotifier *bs = nullptr;
|
QSharedPointer<QSocketNotifier> serviceNotifier;
|
||||||
QSocketNotifier *browserSocket = nullptr;
|
QSharedPointer<QSocketNotifier> browserNotifier;
|
||||||
QByteArray txt;
|
QByteArray txt;
|
||||||
QHash<QString, Resolver*> resolvers;
|
QHash<QString, Resolver*> resolvers;
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user