diff options
Diffstat (limited to 'src/lua/modules/thread')
-rw-r--r-- | src/lua/modules/thread/je_lua_thread.cpp | 22 | ||||
-rw-r--r-- | src/lua/modules/thread/je_lua_thread.h | 161 |
2 files changed, 89 insertions, 94 deletions
diff --git a/src/lua/modules/thread/je_lua_thread.cpp b/src/lua/modules/thread/je_lua_thread.cpp index 9c2cb35..5babc13 100644 --- a/src/lua/modules/thread/je_lua_thread.cpp +++ b/src/lua/modules/thread/je_lua_thread.cpp @@ -10,8 +10,6 @@ namespace JinEngine namespace Lua { - using thread::Thread; - typedef Ref<Thread>& ThreadRef; int luaopen_thread(lua_State* L); @@ -109,23 +107,23 @@ namespace JinEngine Thread::Variant v = ref->fetch(slot); switch (v.type) { - case thread::Thread::Variant::INTERGER: + case Thread::Variant::INTERGER: luax_pushinteger(L, v.integer); break; - case thread::Thread::Variant::BOOLEAN: + case Thread::Variant::BOOLEAN: luax_pushboolean(L, v.boolean); break; - case thread::Thread::Variant::CSTRING: + case Thread::Variant::CSTRING: luax_pushstring(L, v.cstring); break; - case thread::Thread::Variant::REAL: + case Thread::Variant::REAL: luax_pushnumber(L, v.real); break; - case thread::Thread::Variant::POINTER: + case Thread::Variant::POINTER: Proxy* p = (Proxy*)v.pointer; Proxy* proxy = (Proxy*)luax_newinstance(L, p->getObjectType(), sizeof(Proxy)); p->reference->retain(); @@ -143,23 +141,23 @@ namespace JinEngine Thread::Variant v = ref->demand(slot); switch (v.type) { - case thread::Thread::Variant::INTERGER: + case Thread::Variant::INTERGER: luax_pushinteger(L, v.integer); break; - case thread::Thread::Variant::BOOLEAN: + case Thread::Variant::BOOLEAN: luax_pushboolean(L, v.boolean); break; - case thread::Thread::Variant::CSTRING: + case Thread::Variant::CSTRING: luax_pushstring(L, v.cstring); break; - case thread::Thread::Variant::REAL: + case Thread::Variant::REAL: luax_pushnumber(L, v.real); break; - case thread::Thread::Variant::POINTER: + case Thread::Variant::POINTER: Proxy* p = (Proxy*)v.pointer; const char* objType = p->getObjectType(); Proxy* proxy = (Proxy*)luax_newinstance(L, objType, sizeof(Proxy)); diff --git a/src/lua/modules/thread/je_lua_thread.h b/src/lua/modules/thread/je_lua_thread.h index de9a8a8..ffe99d0 100644 --- a/src/lua/modules/thread/je_lua_thread.h +++ b/src/lua/modules/thread/je_lua_thread.h @@ -5,90 +5,87 @@ namespace JinEngine { namespace Lua { - namespace thread + + class Thread { + public: + typedef JinEngine::MultiThread::Thread::Variant Variant; + typedef JinEngine::MultiThread::Thread::ThreadRunner ThreadRunner; + + Thread(std::string _name, std::string _code, ThreadRunner runner) + : name(_name) + , code(_code) + { + thread = new JinEngine::MultiThread::Thread(_name, runner); + } + + ~Thread() + { + delete thread; + } + + bool start(void* p) + { + return thread->start(p); + } + + void wait() + { + thread->wait(); + } + + void send(int slot, const Variant& value) + { + thread->send(slot, value); + } + + bool receive(int slot) + { + return thread->receive(slot); + } + + Variant fetch(int slot) + { + return thread->fetch(slot); + } - class Thread + Variant demand(int slot) { - public: - typedef JinEngine::MultiThread::Thread::Variant Variant; - typedef JinEngine::MultiThread::Thread::ThreadRunner ThreadRunner; - - Thread(std::string _name, std::string _code, ThreadRunner runner) - : name(_name) - , code(_code) - { - thread = new JinEngine::MultiThread::Thread(_name, runner); - } - - ~Thread() - { - delete thread; - } - - bool start(void* p) - { - return thread->start(p); - } - - void wait() - { - thread->wait(); - } - - void send(int slot, const Variant& value) - { - thread->send(slot, value); - } - - bool receive(int slot) - { - return thread->receive(slot); - } - - Variant fetch(int slot) - { - return thread->fetch(slot); - } - - Variant demand(int slot) - { - return thread->demand(slot); - } - - void remove(int slot) - { - thread->remove(slot); - } - - const char* getName() - { - return name.c_str(); - } - - bool isRunning() - { - return thread->isRunning(); - } - - void lock() - { - thread->lock(); - } - - void unlock() - { - thread->unlock(); - } - - const std::string name; - const std::string code; - - private: - JinEngine::MultiThread::Thread* thread; - - }; - - } // thread + return thread->demand(slot); + } + + void remove(int slot) + { + thread->remove(slot); + } + + const char* getName() + { + return name.c_str(); + } + + bool isRunning() + { + return thread->isRunning(); + } + + void lock() + { + thread->lock(); + } + + void unlock() + { + thread->unlock(); + } + + const std::string name; + const std::string code; + + private: + JinEngine::MultiThread::Thread* thread; + + }; + } // namespace Lua } // namespace JinEngine
\ No newline at end of file |