History

isolate calls to the QtScript libraries to an interface we control

Heather Anderson committed 5 years ago

Commit 1e018db1 parent 713b29e260 files · +6904 −5064Browse files

Showing the changes to assignment-client/src/scripts/EntityScriptServer.cpp (1 of 260 files). Show all

Unified · Split

assignment-client/src/scripts/EntityScriptServer.cpp+38−35
@@ -14,7 +14,9 @@ · 13 unmodified lines
1414 #include <mutex>
1515
1616 #include <AudioConstants.h>
17+#include <AudioScriptingInterface.h>
1718 #include <AudioInjectorManager.h>
19+#include <AvatarHashMap.h>
1820 #include <ClientServerUtils.h>
1921 #include <DebugDraw.h>
2022 #include <EntityNodeData.h>
@@ -130,7 +132,7 @@ void EntityScriptServer::handleEntityScriptGetStatusPacket(QSharedPointer<Receiv · 109 unmodified lines
130132 replyPacketList->writePrimitive(messageID);
131133
132134 EntityScriptDetails details;
133− if (_entitiesScriptEngine->getEntityScriptDetails(entityID, details)) {
135+ if (_entitiesScriptManager->getEntityScriptDetails(entityID, details)) {
134136 replyPacketList->writePrimitive(true);
135137 replyPacketList->writePrimitive(details.status);
136138 replyPacketList->writeString(details.errorInfo);
@@ -175,7 +177,7 @@ void EntityScriptServer::handleSettings() { · 38 unmodified lines
175177 }
176178
177179 void EntityScriptServer::updateEntityPPS() {
178− int numRunningScripts = _entitiesScriptEngine->getNumRunningEntityScripts();
180+ int numRunningScripts = _entitiesScriptManager->getNumRunningEntityScripts();
179181 int pps;
180182 if (std::numeric_limits<int>::max() / _entityPPSPerScript < numRunningScripts) {
181183 qWarning() << QString("Integer multiplication would overflow, clamping to maxint: %1 * %2").arg(numRunningScripts).arg(_entityPPSPerScript);
@@ -236,7 +238,7 @@ void EntityScriptServer::pushLogs() { · 54 unmodified lines
236238
237239 void EntityScriptServer::handleEntityScriptCallMethodPacket(QSharedPointer<ReceivedMessage> receivedMessage, SharedNodePointer senderNode) {
238240
239− if (_entitiesScriptEngine && _entityViewer.getTree() && !_shuttingDown) {
241+ if (_entitiesScriptManager && _entityViewer.getTree() && !_shuttingDown) {
240242 auto entityID = QUuid::fromRfc4122(receivedMessage->read(NUM_BYTES_RFC4122_UUID));
241243
242244 auto method = receivedMessage->readString();
@@ -250,13 +252,13 @@ void EntityScriptServer::handleEntityScriptCallMethodPacket(QSharedPointer<Recei · 7 unmodified lines
250252 params << paramString;
251253 }
252254
253− _entitiesScriptEngine->callEntityScriptMethod(entityID, method, params, senderNode->getUUID());
255+ _entitiesScriptManager->callEntityScriptMethod(entityID, method, params, senderNode->getUUID());
254256 }
255257 }
256258
257259
258260 void EntityScriptServer::run() {
259− DependencyManager::set<ScriptEngines>(ScriptEngine::ENTITY_SERVER_SCRIPT);
261+ DependencyManager::set<ScriptEngines>(ScriptManager::ENTITY_SERVER_SCRIPT);
260262 DependencyManager::set<EntityScriptServerServices>();
261263 DependencyManager::set<AvatarHashMap>();
262264
@@ -446,52 +448,53 @@ void EntityScriptServer::selectAudioFormat(const QString& selectedCodecName) { · 183 unmodified lines
446448
447449 void EntityScriptServer::resetEntitiesScriptEngine() {
448450 auto engineName = QString("about:Entities %1").arg(++_entitiesScriptEngineCount);
449− auto newEngine = scriptEngineFactory(ScriptEngine::ENTITY_SERVER_SCRIPT, NO_SCRIPT, engineName);
451+ auto newManager = scriptManagerFactory(ScriptManager::ENTITY_SERVER_SCRIPT, NO_SCRIPT, engineName);
452+ auto newEngine = newManager->engine();
450453
451454 auto webSocketServerConstructorValue = newEngine->newFunction(WebSocketServerClass::constructor);
452− newEngine->globalObject().setProperty("WebSocketServer", webSocketServerConstructorValue);
455+ newEngine->globalObject()->setProperty("WebSocketServer", webSocketServerConstructorValue);
453456
454457 newEngine->registerGlobalObject("SoundCache", DependencyManager::get<SoundCacheScriptingInterface>().data());
455458 newEngine->registerGlobalObject("AvatarList", DependencyManager::get<AvatarHashMap>().data());
456459
457460 // connect this script engines printedMessage signal to the global ScriptEngines these various messages
458461 auto scriptEngines = DependencyManager::get<ScriptEngines>().data();
459− connect(newEngine.data(), &ScriptEngine::printedMessage, scriptEngines, &ScriptEngines::onPrintedMessage);
460− connect(newEngine.data(), &ScriptEngine::errorMessage, scriptEngines, &ScriptEngines::onErrorMessage);
461− connect(newEngine.data(), &ScriptEngine::warningMessage, scriptEngines, &ScriptEngines::onWarningMessage);
462− connect(newEngine.data(), &ScriptEngine::infoMessage, scriptEngines, &ScriptEngines::onInfoMessage);
462+ connect(newManager.data(), &ScriptManager::printedMessage, scriptEngines, &ScriptEngines::onPrintedMessage);
463+ connect(newManager.data(), &ScriptManager::errorMessage, scriptEngines, &ScriptEngines::onErrorMessage);
464+ connect(newManager.data(), &ScriptManager::warningMessage, scriptEngines, &ScriptEngines::onWarningMessage);
465+ connect(newManager.data(), &ScriptManager::infoMessage, scriptEngines, &ScriptEngines::onInfoMessage);
463466
464− connect(newEngine.data(), &ScriptEngine::update, this, [this] {
467+ connect(newManager.data(), &ScriptManager::update, this, [this] {
465468 _entityViewer.queryOctree();
466469 _entityViewer.getTree()->preUpdate();
467470 _entityViewer.getTree()->update();
468471 });
469472
470− scriptEngines->runScriptInitializers(newEngine);
471− newEngine->runInThread();
472− auto newEngineSP = qSharedPointerCast<EntitiesScriptEngineProvider>(newEngine);
473+ scriptEngines->runScriptInitializers(newManager);
474+ newManager->runInThread();
475+ auto newEngineSP = qSharedPointerCast<EntitiesScriptEngineProvider>(newManager);
473476 // On the entity script server, these are the same
474477 DependencyManager::get<EntityScriptingInterface>()->setPersistentEntitiesScriptEngine(newEngineSP);
475478 DependencyManager::get<EntityScriptingInterface>()->setNonPersistentEntitiesScriptEngine(newEngineSP);
476479
477− if (_entitiesScriptEngine) {
478− disconnect(_entitiesScriptEngine.data(), &ScriptEngine::entityScriptDetailsUpdated,
480+ if (_entitiesScriptManager) {
481+ disconnect(_entitiesScriptManager.data(), &ScriptManager::entityScriptDetailsUpdated,
479482 this, &EntityScriptServer::updateEntityPPS);
480483 }
481484
482− _entitiesScriptEngine.swap(newEngine);
483− connect(_entitiesScriptEngine.data(), &ScriptEngine::entityScriptDetailsUpdated,
485+ _entitiesScriptManager.swap(newManager);
486+ connect(_entitiesScriptManager.data(), &ScriptManager::entityScriptDetailsUpdated,
484487 this, &EntityScriptServer::updateEntityPPS);
485488 }
486489
487490
488491 void EntityScriptServer::clear() {
489492 // unload and stop the engine
490− if (_entitiesScriptEngine) {
493+ if (_entitiesScriptManager) {
491494 // do this here (instead of in deleter) to avoid marshalling unload signals back to this thread
492− _entitiesScriptEngine->unloadAllEntityScripts();
493− _entitiesScriptEngine->stop();
494− _entitiesScriptEngine->waitTillDoneRunning();
495+ _entitiesScriptManager->unloadAllEntityScripts();
496+ _entitiesScriptManager->stop();
497+ _entitiesScriptManager->waitTillDoneRunning();
495498 }
496499
497500 _entityViewer.clear();
@@ -503,8 +506,8 @@ void EntityScriptServer::clear() { · 5 unmodified lines
503506 }
504507
505508 void EntityScriptServer::shutdownScriptEngine() {
506− if (_entitiesScriptEngine) {
507− _entitiesScriptEngine->disconnectNonEssentialSignals(); // disconnect all slots/signals from the script engine, except essential
509+ if (_entitiesScriptManager) {
510+ _entitiesScriptManager->disconnectNonEssentialSignals(); // disconnect all slots/signals from the script engine, except essential
508511 }
509512 _shuttingDown = true;
510513
@@ -513,7 +516,7 @@ void EntityScriptServer::shutdownScriptEngine() { · 2 unmodified lines
513516 auto scriptEngines = DependencyManager::get<ScriptEngines>();
514517 scriptEngines->shutdownScripting();
515518
516− _entitiesScriptEngine.clear();
519+ _entitiesScriptManager.clear();
517520
518521 auto entityScriptingInterface = DependencyManager::get<EntityScriptingInterface>();
519522 // our entity tree is going to go away so tell that to the EntityScriptingInterface
@@ -531,8 +534,8 @@ void EntityScriptServer::addingEntity(const EntityItemID& entityID) { · 11 unmodified lines
531534 }
532535
533536 void EntityScriptServer::deletingEntity(const EntityItemID& entityID) {
534− if (_entityViewer.getTree() && !_shuttingDown && _entitiesScriptEngine) {
535− _entitiesScriptEngine->unloadEntityScript(entityID, true);
537+ if (_entityViewer.getTree() && !_shuttingDown && _entitiesScriptManager) {
538+ _entitiesScriptManager->unloadEntityScript(entityID, true);
536539 }
537540 }
538541
@@ -543,20 +546,20 @@ void EntityScriptServer::entityServerScriptChanging(const EntityItemID& entityID · 4 unmodified lines
543546 }
544547
545548 void EntityScriptServer::checkAndCallPreload(const EntityItemID& entityID, bool forceRedownload) {
546− if (_entityViewer.getTree() && !_shuttingDown && _entitiesScriptEngine) {
549+ if (_entityViewer.getTree() && !_shuttingDown && _entitiesScriptManager) {
547550
548551 EntityItemPointer entity = _entityViewer.getTree()->findEntityByEntityItemID(entityID);
549552 EntityScriptDetails details;
550− bool isRunning = _entitiesScriptEngine->getEntityScriptDetails(entityID, details);
553+ bool isRunning = _entitiesScriptManager->getEntityScriptDetails(entityID, details);
551554 if (entity && (forceRedownload || !isRunning || details.scriptText != entity->getServerScripts())) {
552555 if (isRunning) {
553− _entitiesScriptEngine->unloadEntityScript(entityID, true);
556+ _entitiesScriptManager->unloadEntityScript(entityID, true);
554557 }
555558
556559 QString scriptUrl = entity->getServerScripts();
557560 if (!scriptUrl.isEmpty()) {
558561 scriptUrl = DependencyManager::get<ResourceManager>()->normalizeURL(scriptUrl);
559− _entitiesScriptEngine->loadEntityScript(entityID, scriptUrl, forceRedownload);
562+ _entitiesScriptManager->loadEntityScript(entityID, scriptUrl, forceRedownload);
560563 }
561564 }
562565 }
@@ -573,9 +576,9 @@ void EntityScriptServer::sendStatsPacket() { · 10 unmodified lines
573576
574577 QJsonObject scriptEngineStats;
575578 int numberRunningScripts = 0;
576− const auto scriptEngine = _entitiesScriptEngine;
577− if (scriptEngine) {
578− numberRunningScripts = scriptEngine->getNumRunningEntityScripts();
579+ const auto scriptManager = _entitiesScriptManager;
580+ if (scriptManager) {
581+ numberRunningScripts = scriptManager->getNumRunningEntityScripts();
579582 }
580583 scriptEngineStats["number_running_scripts"] = numberRunningScripts;
581584 statsObject["script_engine_stats"] = scriptEngineStats;