Private
Public Access
1
0

Add code to publish/republish once network is reachable. Fixes #1.

This commit is contained in:
2019-04-10 17:07:58 -04:00
parent 6afebb7056
commit 234e867a8a
2 changed files with 21 additions and 2 deletions

View File

@@ -76,8 +76,9 @@ signals:
void error(QTcpSocket::SocketError socketError); void error(QTcpSocket::SocketError socketError);
}; };
SimpleCastTcpService::SimpleCastTcpService(MiniMediaPlayer *player,QObject *parent) : QTcpServer(parent),player(player) 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)));
} }
bool SimpleCastTcpService::listen(const QHostAddress& address, quint16 port) bool SimpleCastTcpService::listen(const QHostAddress& address, quint16 port)
@@ -87,10 +88,23 @@ bool SimpleCastTcpService::listen(const QHostAddress& address, quint16 port)
//Setup DNSSD //Setup DNSSD
dnsService = new KDNSSD::PublicService(QString(),"_simplecast._tcp",this->serverPort(),"local"); dnsService = new KDNSSD::PublicService(QString(),"_simplecast._tcp",this->serverPort(),"local");
dnsService->setParent(this); dnsService->setParent(this);
dnsService->publishAsync(); //Start publishing now and if not, wait for networkAccessibleManager to let us know.
if(manager->networkAccessible() == QNetworkAccessManager::Accessible && !dnsService->isPublished())
{
dnsService->publishAsync();
}
return listening; return listening;
} }
void SimpleCastTcpService::networkAccessChanged(QNetworkAccessManager::NetworkAccessibility accessible)
{
if(accessible == QNetworkAccessManager::Accessible)
{
dnsService->publishAsync();
}
}
void SimpleCastTcpService::close() void SimpleCastTcpService::close()
{ {
QTcpServer::close(); QTcpServer::close();

View File

@@ -21,6 +21,7 @@
#include <QTcpServer> #include <QTcpServer>
#include <KDNSSD/DNSSD/PublicService> #include <KDNSSD/DNSSD/PublicService>
#include "minimediaplayer.h" #include "minimediaplayer.h"
#include <QNetworkAccessManager>
/** /**
* Tcp Server that responds to simple client requests and can be found over DNSSD. * Tcp Server that responds to simple client requests and can be found over DNSSD.
@@ -37,9 +38,13 @@ public:
protected: protected:
void incomingConnection(qintptr handle) override; void incomingConnection(qintptr handle) override;
private slots:
void networkAccessChanged(QNetworkAccessManager::NetworkAccessibility accessible);
private: private:
MiniMediaPlayer *player; MiniMediaPlayer *player;
KDNSSD::PublicService *dnsService; KDNSSD::PublicService *dnsService;
QNetworkAccessManager *manager;
}; };