summaryrefslogtreecommitdiff
path: root/plugins/bluemonkey/agent.cpp
blob: 85e26ddd5b80747c8345f96052c11a30d743e5bd (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
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);
}