File indexing completed on 2024-04-28 15:22:07

0001 /*
0002     This file is part of the KDE project
0003 
0004     SPDX-FileCopyrightText: 2004 Jakub Stachowski <qbast@go2.pl>
0005 
0006     SPDX-License-Identifier: LGPL-2.0-or-later
0007 */
0008 
0009 #include "mdnsd-servicetypebrowser_p.h"
0010 #include "servicebrowser.h"
0011 #include "servicetypebrowser.h"
0012 
0013 namespace KDNSSD
0014 {
0015 ServiceTypeBrowser::ServiceTypeBrowser(const QString &domain, QObject *parent)
0016     : QObject(parent)
0017     , d(new ServiceTypeBrowserPrivate(this))
0018 {
0019     Q_D(ServiceTypeBrowser);
0020     d->m_browser = new ServiceBrowser("_services._dns-sd._udp", false, domain);
0021     connect(d->m_browser, SIGNAL(serviceAdded(KDNSSD::RemoteService::Ptr)), d, SLOT(newService(KDNSSD::RemoteService::Ptr)));
0022     connect(d->m_browser, SIGNAL(serviceRemoved(KDNSSD::RemoteService::Ptr)), d, SLOT(removeService(KDNSSD::RemoteService::Ptr)));
0023     connect(d->m_browser, SIGNAL(finished()), this, SIGNAL(finished()));
0024 }
0025 
0026 ServiceTypeBrowser::~ServiceTypeBrowser() = default;
0027 
0028 QStringList ServiceTypeBrowser::serviceTypes() const
0029 {
0030     Q_D(const ServiceTypeBrowser);
0031     return d->m_servicetypes;
0032 }
0033 
0034 void ServiceTypeBrowser::startBrowse()
0035 {
0036     Q_D(ServiceTypeBrowser);
0037     d->m_browser->startBrowse();
0038 }
0039 
0040 void ServiceTypeBrowserPrivate::newService(KDNSSD::RemoteService::Ptr srv)
0041 {
0042     QString type = srv->serviceName() + '.' + srv->type();
0043     m_servicetypes += type;
0044     Q_EMIT m_parent->serviceTypeAdded(type);
0045 }
0046 
0047 void ServiceTypeBrowserPrivate::removeService(KDNSSD::RemoteService::Ptr srv)
0048 {
0049     QString type = srv->serviceName() + '.' + srv->type();
0050     m_servicetypes.removeAll(type);
0051     Q_EMIT m_parent->serviceTypeRemoved(type);
0052 }
0053 
0054 }
0055 
0056 #include "moc_mdnsd-servicetypebrowser_p.cpp"
0057 #include "moc_servicetypebrowser.cpp"