mirror of
https://github.com/overte-org/overte.git
synced 2025-08-09 06:18:52 +02:00
use common settings retreival code to block before run in AudioMixer
This commit is contained in:
parent
dbf41c8a42
commit
84b86c17b7
3 changed files with 33 additions and 42 deletions
|
@ -408,41 +408,24 @@ void AudioMixer::run() {
|
||||||
|
|
||||||
nodeList->linkedDataCreateCallback = attachNewBufferToNode;
|
nodeList->linkedDataCreateCallback = attachNewBufferToNode;
|
||||||
|
|
||||||
// setup a NetworkAccessManager to ask the domain-server for our settings
|
// wait until we have the domain-server settings, otherwise we bail
|
||||||
NetworkAccessManager& networkManager = NetworkAccessManager::getInstance();
|
DomainHandler& domainHandler = nodeList->getDomainHandler();
|
||||||
|
|
||||||
QUrl settingsJSONURL;
|
qDebug() << "Waiting for domain settings from domain-server.";
|
||||||
settingsJSONURL.setScheme("http");
|
|
||||||
settingsJSONURL.setHost(nodeList->getDomainHandler().getHostname());
|
|
||||||
settingsJSONURL.setPort(DOMAIN_SERVER_HTTP_PORT);
|
|
||||||
settingsJSONURL.setPath("/settings.json");
|
|
||||||
settingsJSONURL.setQuery(QString("type=%1").arg(_type));
|
|
||||||
|
|
||||||
QNetworkReply *reply = NULL;
|
// block until we get the settingsRequestComplete signal
|
||||||
|
QEventLoop loop;
|
||||||
|
loop.connect(&domainHandler, &DomainHandler::settingsRequestComplete, &loop, &QEventLoop::quit);
|
||||||
|
domainHandler.requestDomainSettings();
|
||||||
|
loop.exec();
|
||||||
|
|
||||||
int failedAttempts = 0;
|
if (domainHandler.getSettingsObject().isEmpty()) {
|
||||||
const int MAX_SETTINGS_REQUEST_FAILED_ATTEMPTS = 5;
|
qDebug() << "Failed to retreive settings object from domain-server. Bailing on assignment.";
|
||||||
|
setFinished(true);
|
||||||
qDebug() << "Requesting settings for assignment from domain-server at" << settingsJSONURL.toString();
|
return;
|
||||||
|
|
||||||
while (!reply || reply->error() != QNetworkReply::NoError) {
|
|
||||||
reply = networkManager.get(QNetworkRequest(settingsJSONURL));
|
|
||||||
|
|
||||||
QEventLoop loop;
|
|
||||||
QObject::connect(reply, SIGNAL(finished()), &loop, SLOT(quit()));
|
|
||||||
|
|
||||||
loop.exec();
|
|
||||||
|
|
||||||
++failedAttempts;
|
|
||||||
|
|
||||||
if (failedAttempts == MAX_SETTINGS_REQUEST_FAILED_ATTEMPTS) {
|
|
||||||
qDebug() << "Failed to get settings from domain-server. Bailing on assignment.";
|
|
||||||
setFinished(true);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
QJsonObject settingsObject = QJsonDocument::fromJson(reply->readAll()).object();
|
const QJsonObject& settingsObject = domainHandler.getSettingsObject();
|
||||||
|
|
||||||
// check the settings object to see if we have anything we can parse out
|
// check the settings object to see if we have anything we can parse out
|
||||||
const QString AUDIO_GROUP_KEY = "audio";
|
const QString AUDIO_GROUP_KEY = "audio";
|
||||||
|
|
|
@ -128,18 +128,21 @@ void DomainHandler::setIsConnected(bool isConnected) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void DomainHandler::requestDomainSettings() const {
|
void DomainHandler::requestDomainSettings() const {
|
||||||
|
if (_settingsObject.isEmpty()) {
|
||||||
// setup the URL required to grab settings JSON
|
// setup the URL required to grab settings JSON
|
||||||
QUrl settingsJSONURL;
|
QUrl settingsJSONURL;
|
||||||
settingsJSONURL.setScheme("http");
|
settingsJSONURL.setScheme("http");
|
||||||
settingsJSONURL.setHost(_hostname);
|
settingsJSONURL.setHost(_hostname);
|
||||||
settingsJSONURL.setPort(DOMAIN_SERVER_HTTP_PORT);
|
settingsJSONURL.setPort(DOMAIN_SERVER_HTTP_PORT);
|
||||||
settingsJSONURL.setPath("/settingz.json/");
|
settingsJSONURL.setPath("/settings.json");
|
||||||
Assignment::Type assignmentType = Assignment::typeForNodeType(NodeList::getInstance()->getOwnerType());
|
Assignment::Type assignmentType = Assignment::typeForNodeType(NodeList::getInstance()->getOwnerType());
|
||||||
settingsJSONURL.setQuery(QString("type=%1").arg(assignmentType));
|
settingsJSONURL.setQuery(QString("type=%1").arg(assignmentType));
|
||||||
|
|
||||||
QNetworkReply* reply = NetworkAccessManager::getInstance().get(QNetworkRequest(settingsJSONURL));
|
qDebug() << "Requesting domain-server settings at" << settingsJSONURL.toString();
|
||||||
connect(reply, &QNetworkReply::finished, this, &DomainHandler::settingsRequestFinished);
|
|
||||||
|
QNetworkReply* reply = NetworkAccessManager::getInstance().get(QNetworkRequest(settingsJSONURL));
|
||||||
|
connect(reply, &QNetworkReply::finished, this, &DomainHandler::settingsRequestFinished);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const int MAX_SETTINGS_REQUEST_FAILED_ATTEMPTS = 5;
|
const int MAX_SETTINGS_REQUEST_FAILED_ATTEMPTS = 5;
|
||||||
|
@ -154,6 +157,7 @@ void DomainHandler::settingsRequestFinished() {
|
||||||
_settingsObject = QJsonDocument::fromJson(settingsReply->readAll()).object();
|
_settingsObject = QJsonDocument::fromJson(settingsReply->readAll()).object();
|
||||||
|
|
||||||
qDebug() << "Received domain settings.";
|
qDebug() << "Received domain settings.";
|
||||||
|
emit settingsRequestComplete(true);
|
||||||
|
|
||||||
// reset failed settings requests to 0, we got them
|
// reset failed settings requests to 0, we got them
|
||||||
_failedSettingsRequests = 0;
|
_failedSettingsRequests = 0;
|
||||||
|
@ -166,6 +170,7 @@ void DomainHandler::settingsRequestFinished() {
|
||||||
qDebug() << "Failed to retreive domain-server settings" << MAX_SETTINGS_REQUEST_FAILED_ATTEMPTS << "times. Re-setting connection to domain.";
|
qDebug() << "Failed to retreive domain-server settings" << MAX_SETTINGS_REQUEST_FAILED_ATTEMPTS << "times. Re-setting connection to domain.";
|
||||||
clearSettings();
|
clearSettings();
|
||||||
clearConnectionInfo();
|
clearConnectionInfo();
|
||||||
|
emit settingsRequestComplete(false);
|
||||||
} else {
|
} else {
|
||||||
requestDomainSettings();
|
requestDomainSettings();
|
||||||
}
|
}
|
||||||
|
|
|
@ -58,6 +58,7 @@ public:
|
||||||
|
|
||||||
bool hasSettings() const { return !_settingsObject.isEmpty(); }
|
bool hasSettings() const { return !_settingsObject.isEmpty(); }
|
||||||
void requestDomainSettings() const;
|
void requestDomainSettings() const;
|
||||||
|
const QJsonObject& getSettingsObject() const { return _settingsObject; }
|
||||||
|
|
||||||
void parseDTLSRequirementPacket(const QByteArray& dtlsRequirementPacket);
|
void parseDTLSRequirementPacket(const QByteArray& dtlsRequirementPacket);
|
||||||
|
|
||||||
|
@ -68,6 +69,8 @@ signals:
|
||||||
void hostnameChanged(const QString& hostname);
|
void hostnameChanged(const QString& hostname);
|
||||||
void connectedToDomain(const QString& hostname);
|
void connectedToDomain(const QString& hostname);
|
||||||
|
|
||||||
|
void settingsRequestComplete(bool wasSuccessful);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void reset();
|
void reset();
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue