summaryrefslogtreecommitdiff
path: root/plugins/bluemonkey/agent.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/bluemonkey/agent.cpp')
-rw-r--r--plugins/bluemonkey/agent.cpp41
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);
+}