Private
Public Access
1
0

Rearrange dnssd broadcast code to be more consistent and better fit class lifecycle.

This commit is contained in:
2019-04-10 22:20:16 -04:00
parent 85766ffcb8
commit e5d3c6b345
2 changed files with 10 additions and 6 deletions

View File

@@ -79,18 +79,16 @@ signals:
SimpleCastTcpService::SimpleCastTcpService(MiniMediaPlayer *player,QObject *parent) : QTcpServer(parent),player(player),manager(new QNetworkAccessManager(this)) SimpleCastTcpService::SimpleCastTcpService(MiniMediaPlayer *player,QObject *parent) : QTcpServer(parent),player(player),manager(new QNetworkAccessManager(this))
{ {
connect(manager,SIGNAL(networkAccessibleChanged(QNetworkAccessManager::NetworkAccessibility)),this,SLOT(networkAccessChanged(QNetworkAccessManager::NetworkAccessibility))); dnsService = new KDNSSD::PublicService(QString(),"_simplecast._tcp",this->serverPort(),"local");
dnsService->setParent(this);
} }
bool SimpleCastTcpService::listen(const QHostAddress& address, quint16 port) bool SimpleCastTcpService::listen(const QHostAddress& address, quint16 port)
{ {
bool listening = QTcpServer::listen(address,port); bool listening = QTcpServer::listen(address,port);
dnssdConnection = connect(manager,SIGNAL(networkAccessibleChanged(QNetworkAccessManager::NetworkAccessibility)),this,SLOT(networkAccessChanged(QNetworkAccessManager::NetworkAccessibility)));
//Setup DNSSD
dnsService = new KDNSSD::PublicService(QString(),"_simplecast._tcp",this->serverPort(),"local");
dnsService->setParent(this);
//Start publishing now and if not, wait for networkAccessibleManager to let us know. //Start publishing now and if not, wait for networkAccessibleManager to let us know.
if(manager->networkAccessible() == QNetworkAccessManager::Accessible && !dnsService->isPublished()) if(manager->networkAccessible() == QNetworkAccessManager::Accessible)
{ {
dnsService->publishAsync(); dnsService->publishAsync();
} }
@@ -103,12 +101,17 @@ void SimpleCastTcpService::networkAccessChanged(QNetworkAccessManager::NetworkAc
{ {
dnsService->publishAsync(); dnsService->publishAsync();
} }
else
{
dnsService->stop();
}
} }
void SimpleCastTcpService::close() void SimpleCastTcpService::close()
{ {
QTcpServer::close(); QTcpServer::close();
disconnect(dnssdConnection);
dnsService->stop(); dnsService->stop();
} }

View File

@@ -45,6 +45,7 @@ private:
MiniMediaPlayer *player; MiniMediaPlayer *player;
KDNSSD::PublicService *dnsService; KDNSSD::PublicService *dnsService;
QNetworkAccessManager *manager; QNetworkAccessManager *manager;
QMetaObject::Connection dnssdConnection;
}; };