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);
};
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)
@@ -87,10 +88,23 @@ bool SimpleCastTcpService::listen(const QHostAddress& address, quint16 port)
//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.
if(manager->networkAccessible() == QNetworkAccessManager::Accessible && !dnsService->isPublished())
{
dnsService->publishAsync();
}
return listening;
}
void SimpleCastTcpService::networkAccessChanged(QNetworkAccessManager::NetworkAccessibility accessible)
{
if(accessible == QNetworkAccessManager::Accessible)
{
dnsService->publishAsync();
}
}
void SimpleCastTcpService::close()
{
QTcpServer::close();

View File

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