summaryrefslogtreecommitdiff
path: root/includes/LuaTask.h
diff options
context:
space:
mode:
Diffstat (limited to 'includes/LuaTask.h')
-rw-r--r--includes/LuaTask.h20
1 files changed, 13 insertions, 7 deletions
diff --git a/includes/LuaTask.h b/includes/LuaTask.h
index 48cef97..37d64fa 100644
--- a/includes/LuaTask.h
+++ b/includes/LuaTask.h
@@ -11,7 +11,7 @@ class LuaMainTask;
class LuaExecCell {
public:
- LuaExecCell() : m_detached(false) { }
+ LuaExecCell();
virtual ~LuaExecCell() { }
void detach() { m_detached = true; }
void exec(LuaMainTask * mainTask);
@@ -19,7 +19,7 @@ class LuaExecCell {
virtual void run(Lua &) = 0;
private:
Events::Async m_event;
- bool m_detached;
+ bool m_detached = false;
friend class LuaTask;
};
@@ -31,6 +31,14 @@ class LuaExecString : public LuaExecCell {
String m_str;
};
+class LuaExecFile : public LuaExecCell {
+ public:
+ LuaExecFile(IO<Handle> file) : m_file(file) { }
+ private:
+ virtual void run(Lua &);
+ IO<Handle> m_file;
+};
+
class LuaTask : public Task {
public:
~LuaTask() { L.weaken(); }
@@ -45,17 +53,15 @@ class LuaTask : public Task {
class LuaMainTask : public Task {
public:
- LuaMainTask() : m_stopping(false) { }
- ~LuaMainTask() { L.close(); }
+ LuaMainTask();
+ ~LuaMainTask();
void stop();
virtual const char * getName() const { return "LuaMainTask"; }
private:
void exec(LuaExecCell * cell);
virtual void Do();
Lua L;
- Events::Async m_queueEvent;
- Queue<LuaExecCell> m_queue;
- bool m_stopping;
+ TQueue<LuaExecCell> m_queue;
friend class LuaExecCell;
};