From f97c73bd1e43a0eb32ad8dc43fc28f6e40b28f38 Mon Sep 17 00:00:00 2001 From: David Walter Seikel Date: Fri, 23 May 2014 13:22:36 +1000 Subject: Rewrite the LuaSL script running stuff (twice lol), plus much related tweakage and cleanups. --- src/libraries/Runnr.h | 70 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 70 insertions(+) (limited to 'src/libraries/Runnr.h') diff --git a/src/libraries/Runnr.h b/src/libraries/Runnr.h index 0e0fc73..ba5c17e 100644 --- a/src/libraries/Runnr.h +++ b/src/libraries/Runnr.h @@ -4,12 +4,82 @@ #include #include +#include +#include #include #include #include #include +// Stick with Plan C for now. +#define THREADIT 0 + +typedef enum +{ + RUNNR_COMPILING, + RUNNR_NOT_STARTED, + RUNNR_RUNNING, + RUNNR_WAIT, + RUNNR_READY, + RUNNR_RESET, + RUNNR_FINISHED +} runnrStatus; + +typedef struct _LuaCompile LuaCompile; +typedef void (* compileCb)(LuaCompile *compiler); + +typedef struct _LuaCompile +{ + char *file, *SID, *luaName; + int bugCount; + void *data; + Ecore_Con_Client *client; + compileCb cb; +} LuaCompiler; + +typedef struct _script script; +typedef void (* RunnrServerCb)(script *me, const char *message); + +typedef struct _script +{ + Eina_Clist node; +#if THREADIT + Eina_Lock mutex; + Ecore_Thread *me; +#endif + void *data; + char SID[PATH_MAX]; + char *name; + char fileName[PATH_MAX]; + char binName[PATH_MAX]; + lua_State *L; + struct timeval startTime; + float timerTime; + runnrStatus status; + RunnrServerCb send2server; + Eina_Clist messages; + Ecore_Con_Client *client; + Ecore_Timer *timer; +} script; + +typedef struct +{ + Eina_Clist node; + script *s; + const char message[PATH_MAX]; +} scriptMessage; + + +script *scriptAdd(char *file, char *SID, RunnrServerCb send2server, void *data); +void compileScript(LuaCompiler *compiler); +void runScript(script *me); +void resetScript(script *me); +script *getScript(char *SID); +void takeScript(script *me); +void releaseScript(script *me); +void send2script(const char *SID, const char *message); +void printScriptsStatus(); void dumpStack(lua_State *L, int i); void doLuaString(lua_State *L, char *string, char *module); -- cgit v1.1