src/lua_thread.h
branchnew-lib-errors
changeset 218 5229a5d098b2
parent 217 7728d6ec3abf
child 219 cefec18b8268
--- a/src/lua_thread.h	Wed May 27 23:57:48 2009 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,85 +0,0 @@
-#ifndef LUA_THREAD_H
-#define LUA_THREAD_H
-
-/**
- * @file
- *
- * Running code as lua coroutines for a nexus_lua
- */
-#include "nexus_lua.h"
-#include <lua5.1/lua.h>
-
-/*
- * Forward-declare
- */
-struct lua_thread;
-
-/**
- * Callback for async execution completion. The thread will be cleaned up for re-use before this is called.
- *
- * Called with err == NULL for success, error code otherwise.
- *
- * XXX: also return execution results (as a lua_State arg)?
- */
-typedef void (*lua_thread_cb) (const error_t *err, void *arg);
-
-/**
- * A thread of execution
- */
-struct lua_thread {
-    /** The lua_nexus environment we're running under */
-    struct nexus_lua *lua;
-
-    /** Callback */
-    lua_thread_cb cb_func;
-
-    /** Callback context argument */
-    void *cb_arg;
-
-    /** Real lua thread state */
-    lua_State *L;
-};
-
-/**
- * Initialize the given lua_thread state for execution.
- *
- * You only need to call this once for each lua_thread that you use.
- */
-void lua_thread_init (struct lua_thread *thread, struct nexus_lua *lua, lua_thread_cb cb_func, void *cb_arg);
-
-/**
- * Execute the given chunk in a thread context.
- *
- * This should be called from unprotected mode, and the thread must currently not be active.
- *
- * This will load the chunk, create a new lua thread state off the lua_nexus, and then do the initial 'lua_resume' call
- * on the loaded chunk, to execute up to the first yield or final return.
- *
- * If this process raises an error, it will be returned directly. If the called chunk simply returns without yielding,
- * this returns 0, and the callback is *NOT* called. Otherwise, this returns >0 and the thread's callback function will
- * eventually be called once the thread either errors out or finishes execution.
- */
-int lua_thread_start (struct lua_thread *thread, const char *chunk, error_t *err);
-
-/**
- * Protected-mode function to yield execution of the given lua_State, which must be a luaState created with
- * lua_thread_start.
- *
- * This should be called the same way as lua_yield, except no results are supported yet.
- */
-int lua_thread_yield_state (lua_State *L);
-
-/**
- * Resume execution of the given lua_State, which must be a lua_State created with lua_thread_start.
- */
-void lua_thread_resume_state (lua_State *L);
-
-/**
- * Abort execution of the given thread, if it's running.
- *
- * Currently, there is no mechanism to actually abort a running thread, so this will instead release the lua_thread for
- * new use, and then cause the lua_thread_resume to do nothing. 
- */
-void lua_thread_abort (struct lua_thread *thread);
-
-#endif