diff options
Diffstat (limited to 'plugins/bluemonkey/agent.cpp')
-rw-r--r-- | plugins/bluemonkey/agent.cpp | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/plugins/bluemonkey/agent.cpp b/plugins/bluemonkey/agent.cpp new file mode 100644 index 00000000..85e26ddd --- /dev/null +++ b/plugins/bluemonkey/agent.cpp @@ -0,0 +1,41 @@ +#include "agent.h" +#include <debugout.h> +#include <QTimer> +#include <QScriptEngine> + +BluemonkeyAgent::BluemonkeyAgent(QScriptEngine *engine) + :QScriptEngineAgent(engine) +{ +} + +void BluemonkeyAgent::scriptLoad(qint64 id, const QString &program, const QString &fileName, int baseLineNumber) +{ + DebugOut()<<"executing script"<<endl; + + QTimer *timer = new QTimer(); + timer->setSingleShot(true); + timer->connect(timer, SIGNAL(timeout()), this, SLOT(timeout())); + timer->start(5000); + + timerIdMap[timer] = id; +} + +void BluemonkeyAgent::timeout() +{ + quint64 id = timerIdMap[sender()]; + + if(idList.contains(id)) + { + DebugOut()<<"script aborted evaluation. timed out."<<endl; + engine()->abortEvaluation(); + } + + timerIdMap.remove(sender()); + + sender()->deleteLater(); +} + +void BluemonkeyAgent::scriptUnload(qint64 id) +{ + idList.removeAll(id); +} |