From 0aed08a0069e9c568e54e538381f4e57a96aa606 Mon Sep 17 00:00:00 2001 From: Brad Hefta-Gaub Date: Tue, 15 Sep 2015 16:52:15 -0700 Subject: [PATCH] more robust handling of readConfiguration --- .../src/entities/EntityServer.cpp | 4 +++- assignment-client/src/entities/EntityServer.h | 2 +- .../src/octree/OctreeQueryNode.cpp | 3 ++- assignment-client/src/octree/OctreeServer.cpp | 19 ++++++++++--------- assignment-client/src/octree/OctreeServer.h | 4 ++-- 5 files changed, 18 insertions(+), 14 deletions(-) diff --git a/assignment-client/src/entities/EntityServer.cpp b/assignment-client/src/entities/EntityServer.cpp index bde53e4a87..bdd5728246 100644 --- a/assignment-client/src/entities/EntityServer.cpp +++ b/assignment-client/src/entities/EntityServer.cpp @@ -142,7 +142,7 @@ void EntityServer::pruneDeletedEntities() { } } -void EntityServer::readAdditionalConfiguration(const QJsonObject& settingsSectionObject) { +bool EntityServer::readAdditionalConfiguration(const QJsonObject& settingsSectionObject) { bool wantEditLogging = false; readOptionBool(QString("wantEditLogging"), settingsSectionObject, wantEditLogging); qDebug("wantEditLogging=%s", debug::valueOf(wantEditLogging)); @@ -150,4 +150,6 @@ void EntityServer::readAdditionalConfiguration(const QJsonObject& settingsSectio EntityTreePointer tree = std::static_pointer_cast(_tree); tree->setWantEditLogging(wantEditLogging); + + return true; } diff --git a/assignment-client/src/entities/EntityServer.h b/assignment-client/src/entities/EntityServer.h index d2be75d05e..114e0e1726 100644 --- a/assignment-client/src/entities/EntityServer.h +++ b/assignment-client/src/entities/EntityServer.h @@ -41,7 +41,7 @@ public: virtual int sendSpecialPackets(const SharedNodePointer& node, OctreeQueryNode* queryNode, int& packetsSent); virtual void entityCreated(const EntityItem& newEntity, const SharedNodePointer& senderNode); - virtual void readAdditionalConfiguration(const QJsonObject& settingsSectionObject); + virtual bool readAdditionalConfiguration(const QJsonObject& settingsSectionObject) override; public slots: void pruneDeletedEntities(); diff --git a/assignment-client/src/octree/OctreeQueryNode.cpp b/assignment-client/src/octree/OctreeQueryNode.cpp index c68fb4e1b5..f70ff62f91 100644 --- a/assignment-client/src/octree/OctreeQueryNode.cpp +++ b/assignment-client/src/octree/OctreeQueryNode.cpp @@ -242,7 +242,8 @@ bool OctreeQueryNode::updateCurrentViewFrustum() { if (0.0f != getCameraAspectRatio() && 0.0f != getCameraNearClip() && - 0.0f != getCameraFarClip()) { + 0.0f != getCameraFarClip() && + getCameraNearClip() != getCameraFarClip()) { newestViewFrustum.setProjection(glm::perspective( glm::radians(wideFOV), // hack getCameraAspectRatio(), diff --git a/assignment-client/src/octree/OctreeServer.cpp b/assignment-client/src/octree/OctreeServer.cpp index 979f9f6661..ee0403d57b 100644 --- a/assignment-client/src/octree/OctreeServer.cpp +++ b/assignment-client/src/octree/OctreeServer.cpp @@ -887,7 +887,7 @@ bool OctreeServer::readOptionString(const QString& optionName, const QJsonObject return optionAvailable; } -void OctreeServer::readConfiguration() { +bool OctreeServer::readConfiguration() { // if the assignment had a payload, read and parse that if (getPayload().size() > 0) { parsePayload(); @@ -906,14 +906,13 @@ void OctreeServer::readConfiguration() { domainHandler.requestDomainSettings(); loop.exec(); - qDebug() << "Got domain settings from domain-server."; - - QJsonObject settingsObject { domainHandler.getSettingsObject() }; - - if (settingsObject.isEmpty()) { - qDebug() << "No settings object from domain-server."; + if (domainHandler.getSettingsObject().isEmpty()) { + qDebug() << "Failed to retreive settings object from domain-server. Bailing on assignment."; + setFinished(true); + return false; } + const QJsonObject& settingsObject = domainHandler.getSettingsObject(); QString settingsKey = getMyDomainSettingsKey(); QJsonObject settingsSectionObject = settingsObject[settingsKey].toObject(); _settings = settingsSectionObject; // keep this for later @@ -1021,7 +1020,7 @@ void OctreeServer::readConfiguration() { packetsPerSecondTotalMax, _packetsTotalPerInterval); - readAdditionalConfiguration(settingsSectionObject); + return readAdditionalConfiguration(settingsSectionObject); } void OctreeServer::run() { @@ -1047,7 +1046,9 @@ void OctreeServer::run() { commonInit(getMyLoggingServerTargetName(), getMyNodeType()); // read the configuration from either the payload or the domain server configuration - readConfiguration(); + if (!readConfiguration()) { + return; // bailing on run, because readConfiguration failed + } beforeRun(); // after payload has been processed diff --git a/assignment-client/src/octree/OctreeServer.h b/assignment-client/src/octree/OctreeServer.h index 64903ee558..b8e4a5c261 100644 --- a/assignment-client/src/octree/OctreeServer.h +++ b/assignment-client/src/octree/OctreeServer.h @@ -135,8 +135,8 @@ protected: bool readOptionBool(const QString& optionName, const QJsonObject& settingsSectionObject, bool& result); bool readOptionInt(const QString& optionName, const QJsonObject& settingsSectionObject, int& result); bool readOptionString(const QString& optionName, const QJsonObject& settingsSectionObject, QString& result); - void readConfiguration(); - virtual void readAdditionalConfiguration(const QJsonObject& settingsSectionObject) { }; + bool readConfiguration(); + virtual bool readAdditionalConfiguration(const QJsonObject& settingsSectionObject) { return true; }; void parsePayload(); void initHTTPManager(int port); void resetSendingStats();