From 36657c94733008a3b7dfb09d6a0631363ef095da Mon Sep 17 00:00:00 2001 From: ZappoMan Date: Mon, 30 Mar 2015 14:36:48 -0700 Subject: [PATCH 1/4] first cut at script caching --- interface/src/Application.cpp | 6 +- .../src/EntityTreeRenderer.cpp | 5 + libraries/script-engine/src/Script.cpp | 49 ++++++ libraries/script-engine/src/Script.h | 37 +++++ libraries/script-engine/src/ScriptCache.cpp | 146 ++++++++++++++++++ libraries/script-engine/src/ScriptCache.h | 46 ++++++ libraries/script-engine/src/ScriptEngine.cpp | 18 +++ libraries/script-engine/src/ScriptEngine.h | 6 +- 8 files changed, 309 insertions(+), 4 deletions(-) create mode 100644 libraries/script-engine/src/Script.cpp create mode 100644 libraries/script-engine/src/Script.h create mode 100644 libraries/script-engine/src/ScriptCache.cpp create mode 100644 libraries/script-engine/src/ScriptCache.h diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index 97d132508a..c2ac472b9f 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -76,7 +76,7 @@ #include #include #include -//#include +#include #include #include #include @@ -221,7 +221,7 @@ bool setupEssentials(int& argc, char** argv) { auto addressManager = DependencyManager::set(); auto nodeList = DependencyManager::set(NodeType::Agent, listenPort); auto geometryCache = DependencyManager::set(); - //auto scriptCache = DependencyManager::set(); + auto scriptCache = DependencyManager::set(); auto soundCache = DependencyManager::set(); auto glowEffect = DependencyManager::set(); auto faceshift = DependencyManager::set(); @@ -612,7 +612,7 @@ Application::~Application() { DependencyManager::destroy(); DependencyManager::destroy(); DependencyManager::destroy(); - //DependencyManager::destroy(); + DependencyManager::destroy(); DependencyManager::destroy(); QThread* nodeThread = DependencyManager::get()->thread(); diff --git a/libraries/entities-renderer/src/EntityTreeRenderer.cpp b/libraries/entities-renderer/src/EntityTreeRenderer.cpp index 3faa06fc53..f98a13878d 100644 --- a/libraries/entities-renderer/src/EntityTreeRenderer.cpp +++ b/libraries/entities-renderer/src/EntityTreeRenderer.cpp @@ -148,6 +148,7 @@ QString EntityTreeRenderer::loadScriptContents(const QString& scriptMaybeURLorTe qDebug() << "ERROR Loading file:" << fileName; } } else { + /* QNetworkAccessManager& networkAccessManager = NetworkAccessManager::getInstance(); QNetworkRequest networkRequest = QNetworkRequest(url); networkRequest.setHeader(QNetworkRequest::UserAgentHeader, HIGH_FIDELITY_USER_AGENT); @@ -162,6 +163,10 @@ QString EntityTreeRenderer::loadScriptContents(const QString& scriptMaybeURLorTe qDebug() << "ERROR Loading file:" << url.toString(); } delete reply; + */ + auto scriptCache = DependencyManager::get(); + scriptContents = scriptCache->getScript(url); + } } diff --git a/libraries/script-engine/src/Script.cpp b/libraries/script-engine/src/Script.cpp new file mode 100644 index 0000000000..4f5d38a2e1 --- /dev/null +++ b/libraries/script-engine/src/Script.cpp @@ -0,0 +1,49 @@ +// +// Script.cpp +// libraries/script-engine/src +// +// Created by Brad Hefta-Gaub on 2015-03-30 +// Copyright 2015 High Fidelity, Inc. +// +// Distributed under the Apache License, Version 2.0. +// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html +// + +/* +#include + +#include + +#include +#include +#include +#include +#include + +#include +#include +#include + +#include "AudioRingBuffer.h" +#include "AudioFormat.h" +#include "AudioBuffer.h" +#include "AudioEditBuffer.h" +*/ + +#include "Script.h" + +Script::Script(const QUrl& url) : + Resource(url), + _isReady(false) +{ + +} + +void Script::downloadFinished(QNetworkReply* reply) { + // replace our byte array with the downloaded data + _contents = reply->readAll(); + qDebug() << "Script downloaded from:" << getURL(); + _isReady = true; + reply->deleteLater(); +} + diff --git a/libraries/script-engine/src/Script.h b/libraries/script-engine/src/Script.h new file mode 100644 index 0000000000..6cca76a8e8 --- /dev/null +++ b/libraries/script-engine/src/Script.h @@ -0,0 +1,37 @@ +// +// Script.h +// libraries/script-engine/src +// +// Created by Brad Hefta-Gaub on 2015-03-30 +// Copyright 2015 High Fidelity, Inc. +// +// Distributed under the Apache License, Version 2.0. +// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html +// + +#ifndef hifi_Script_h +#define hifi_Script_h + +#include +#include +#include + +#include + +class Script : public Resource { + Q_OBJECT +public: + Script(const QUrl& url); + bool isReady() const { return _isReady; } + const QString& getContents() { return _contents; } + +private: + QString _contents; + bool _isReady; + + virtual void downloadFinished(QNetworkReply* reply); +}; + +typedef QSharedPointer