]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
add conjure-session code and make session available in api commands
authorAnthony Minessale <anthony.minessale@gmail.com>
Wed, 2 Sep 2009 16:24:00 +0000 (16:24 +0000)
committerAnthony Minessale <anthony.minessale@gmail.com>
Wed, 2 Sep 2009 16:24:00 +0000 (16:24 +0000)
git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@14739 d0543943-73ff-0310-b7d9-9358b9ac24b2

src/mod/languages/mod_lua/mod_lua.cpp
src/mod/languages/mod_lua/mod_lua_extra.c
src/mod/languages/mod_lua/mod_lua_extra.h

index 6d4e369457b5b6637252df07562fa8557c0ab2b3..b8a947dc4eb03c25aacca8613b1f069ace4b493f 100644 (file)
@@ -386,8 +386,7 @@ SWITCH_STANDARD_APP(lua_function)
                return;
        }
 
-       snprintf(code, sizeof(code), "~session = freeswitch.Session(\"%s\");", switch_core_session_get_uuid(session));
-       error = lua_parse_and_execute(L, code);
+       mod_lua_conjure_session(L, session, "session", 1);
 
        mycmd = strdup((char *) data);
        switch_assert(mycmd);
@@ -425,6 +424,11 @@ SWITCH_STANDARD_API(lua_api_function)
 
                mycmd = strdup(cmd);
                switch_assert(mycmd);
+
+               if (session) {
+                       mod_lua_conjure_session(L, session, "session", 1);
+               }
+
                mod_lua_conjure_stream(L, stream, "stream", 1);
 
                if (stream->param_event) {
index 904e01dd5123443814b57a421c1a3226460438e2..7fbe970a4ccef19cc8b90070c024fbd2cfebd498 100644 (file)
@@ -1,3 +1,5 @@
+using namespace LUA;
+
 SWITCH_BEGIN_EXTERN_C void mod_lua_conjure_event(lua_State * L, switch_event_t *event, const char *name, int destroy_me)
 {
        Event *result = new Event(event);
@@ -14,5 +16,14 @@ void mod_lua_conjure_stream(lua_State * L, switch_stream_handle_t *stream, const
 }
 
 
+void mod_lua_conjure_session(lua_State * L, switch_core_session_t *session, const char *name, int destroy_me)
+{
+       Session *result = new Session(session);
+
+       SWIG_NewPointerObj(L, result, SWIGTYPE_p_CoreSession, destroy_me);
+       lua_setglobal(L, name);
+}
+
+
 
 SWITCH_END_EXTERN_C
index 2071852eb245b4946d6817761030b7b469dac3c3..f0ab8354cbb66f500b69703d8a44b74ba2d64c8b 100644 (file)
@@ -4,6 +4,7 @@ SWITCH_BEGIN_EXTERN_C
 
 void mod_lua_conjure_event(lua_State *L, switch_event_t *event, const char *name, int destroy_me);
 void mod_lua_conjure_stream(lua_State *L, switch_stream_handle_t *stream, const char *name, int destroy_me);
+void mod_lua_conjure_session(lua_State * L, switch_core_session_t *session, const char *name, int destroy_me);
 
 SWITCH_END_EXTERN_C
 #endif