#ifndef FREESWITCH_LUA_H #define FREESWITCH_LUA_H extern "C" { #include "lua.h" #include #include #include "mod_lua_extra.h" } #include typedef struct{ lua_State* L; int idx; }SWIGLUA_FN; #define SWIGLUA_FN_GET(fn) {lua_pushvalue(fn.L,fn.idx);} namespace LUA { class Session:public CoreSession { private: virtual void do_hangup_hook(); lua_State *getLUA(); lua_State *L; int hh; int mark; public: Session(); Session(char *uuid, CoreSession * a_leg = NULL); Session(switch_core_session_t *session); ~Session(); SWITCH_MOD_DECLARE(virtual void) destroy(void); virtual bool begin_allow_threads(); virtual bool end_allow_threads(); virtual void check_hangup_hook(); virtual switch_status_t run_dtmf_callback(void *input, switch_input_type_t itype); void unsetInputCallback(void); void setInputCallback(char *cbfunc, char *funcargs = NULL); void setHangupHook(char *func, char *arg = NULL); bool ready(); int originate(CoreSession * a_leg_session, char *dest, int timeout); char *cb_function; char *cb_arg; char *hangup_func_str; char *hangup_func_arg; void setLUA(lua_State * state); }; class Dbh { protected: switch_cache_db_handle_t *dbh; bool m_connected; static int query_callback(void *pArg, int argc, char **argv, char **cargv); public: Dbh(char *dsn, char *user = NULL, char *pass = NULL); ~Dbh(); bool release(); bool connected(); bool query(char *sql, SWIGLUA_FN lua_fun); int affected_rows(); }; } #endif