Add code to publish/republish once network is reachable. Fixes #1.
This commit is contained in:
@@ -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);
|
||||||
|
//Start publishing now and if not, wait for networkAccessibleManager to let us know.
|
||||||
|
if(manager->networkAccessible() == QNetworkAccessManager::Accessible && !dnsService->isPublished())
|
||||||
|
{
|
||||||
dnsService->publishAsync();
|
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();
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user