]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
add unsetInputCallback method
authorBrian West <brian@freeswitch.org>
Thu, 14 Aug 2008 17:20:34 +0000 (17:20 +0000)
committerBrian West <brian@freeswitch.org>
Thu, 14 Aug 2008 17:20:34 +0000 (17:20 +0000)
git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@9296 d0543943-73ff-0310-b7d9-9358b9ac24b2

src/mod/languages/mod_lua/freeswitch_lua.cpp
src/mod/languages/mod_lua/freeswitch_lua.h
src/mod/languages/mod_lua/mod_lua_wrap.cpp
src/mod/languages/mod_perl/freeswitch.pm
src/mod/languages/mod_perl/freeswitch_perl.cpp
src/mod/languages/mod_perl/freeswitch_perl.h
src/mod/languages/mod_perl/mod_perl_wrap.cpp
src/mod/languages/mod_python/freeswitch.py
src/mod/languages/mod_python/freeswitch_python.cpp
src/mod/languages/mod_python/freeswitch_python.h
src/mod/languages/mod_python/mod_python_wrap.cpp

index 1e5b8ef2c8418a7117d04f870c6847eab07dee52..4a23b9b4deb3de27b84cf09c78232bcb858c28cd 100644 (file)
@@ -158,6 +158,16 @@ void Session::setHangupHook(char *func, char *arg)
        }
 }
 
+void Session::unsetInputCallback(void)
+{
+       sanity_check_noreturn;
+       switch_safe_free(cb_function);
+       switch_safe_free(cb_arg);
+       args.input_callback = NULL;
+       switch_channel_set_private(channel, "CoreSession", NULL);
+       ap = NULL;
+}
+
 void Session::setInputCallback(char *cbfunc, char *funcargs)
 {
 
index 63f5490db92ac5ef6a0db940c1ed472befae7d75..ad5f37697cc319b86f4ecef996648ab102c1f6e6 100644 (file)
@@ -29,6 +29,7 @@ class Session : public CoreSession {
        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();
index f272976048e4bb20280d2cf5d5e2c1807a48c572..0b3e0d2c0800c4cb6696eeb6071cc14e4f653d4a 100644 (file)
@@ -7157,6 +7157,30 @@ fail:
 }
 
 
+static int _wrap_Session_unsetInputCallback(lua_State* L) {
+  int SWIG_arg = -1;
+  LUA::Session *arg1 = (LUA::Session *) 0 ;
+  
+  SWIG_check_num_args("unsetInputCallback",1,1)
+  if(!SWIG_isptrtype(L,1)) SWIG_fail_arg("unsetInputCallback",1,"LUA::Session *");
+  
+  if (!SWIG_IsOK(SWIG_ConvertPtr(L,1,(void**)&arg1,SWIGTYPE_p_LUA__Session,0))){
+    SWIG_fail_ptr("Session_unsetInputCallback",1,SWIGTYPE_p_LUA__Session);
+  }
+  
+  (arg1)->unsetInputCallback();
+  SWIG_arg=0;
+  
+  return SWIG_arg;
+  
+  if(0) SWIG_fail;
+  
+fail:
+  lua_error(L);
+  return SWIG_arg;
+}
+
+
 static int _wrap_Session_setInputCallback__SWIG_0(lua_State* L) {
   int SWIG_arg = -1;
   LUA::Session *arg1 = (LUA::Session *) 0 ;
@@ -7720,6 +7744,7 @@ static swig_lua_method swig_LUA_Session_methods[] = {
     {"end_allow_threads", _wrap_Session_end_allow_threads}, 
     {"check_hangup_hook", _wrap_Session_check_hangup_hook}, 
     {"run_dtmf_callback", _wrap_Session_run_dtmf_callback}, 
+    {"unsetInputCallback", _wrap_Session_unsetInputCallback}, 
     {"setInputCallback", _wrap_Session_setInputCallback}, 
     {"setHangupHook", _wrap_Session_setHangupHook}, 
     {"ready", _wrap_Session_ready}, 
index 6a9c8e564c1e22d766e75554a099a0fde4e15976..3d1fbb805b2563cd88e63ce6c9de8459fd716c74 100644 (file)
@@ -481,6 +481,7 @@ sub DESTROY {
 *run_dtmf_callback = *freeswitchc::Session_run_dtmf_callback;
 *setME = *freeswitchc::Session_setME;
 *setInputCallback = *freeswitchc::Session_setInputCallback;
+*unsetInputCallback = *freeswitchc::Session_unsetInputCallback;
 *setHangupHook = *freeswitchc::Session_setHangupHook;
 *ready = *freeswitchc::Session_ready;
 *swig_suuid_get = *freeswitchc::Session_suuid_get;
index ef252fccea2ee497b51d59b52cd5b165987d93c5..b41df2b58b87fe9eb09a38edf03b06f5680c6654 100644 (file)
@@ -166,6 +166,17 @@ void Session::setHangupHook(char *func, char *arg)
        }
 }
 
+void Session::unsetInputCallback(void)
+{
+       sanity_check_noreturn;
+       switch_safe_free(cb_function);
+       switch_safe_free(cb_arg);
+       switch_channel_set_private(channel, "CoreSession", NULL);
+       args.input_callback = NULL;
+       ap = NULL;
+       
+}
+
 void Session::setInputCallback(char *cbfunc, char *funcargs)
 {
 
index ccbec939aca551cb65bcbf74658a131c64f7973b..50f2fabfa54921b9c7ba5b4fd6c15d085de83517 100644 (file)
@@ -39,6 +39,7 @@ class Session : public CoreSession {
        virtual switch_status_t run_dtmf_callback(void *input, switch_input_type_t itype);
        void setME(SV *p);
        void setInputCallback(char *cbfunc = "on_input", char *funcargs = NULL);
+       void unsetInputCallback(void);
        void setHangupHook(char *func, char *arg=NULL);
        bool ready();
        char *suuid;
index fca2c9cb35f7846f8329bb1ebd11d7f808c1192d..09f72da14040d896209220d33ff00019dbb19b1b 100644 (file)
@@ -9738,6 +9738,33 @@ XS(_wrap_Session_setInputCallback) {
 }
 
 
+XS(_wrap_Session_unsetInputCallback) {
+  {
+    PERL::Session *arg1 = (PERL::Session *) 0 ;
+    void *argp1 = 0 ;
+    int res1 = 0 ;
+    int argvi = 0;
+    dXSARGS;
+    
+    if ((items < 1) || (items > 1)) {
+      SWIG_croak("Usage: Session_unsetInputCallback(self);");
+    }
+    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_PERL__Session, 0 |  0 );
+    if (!SWIG_IsOK(res1)) {
+      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Session_unsetInputCallback" "', argument " "1"" of type '" "PERL::Session *""'"); 
+    }
+    arg1 = reinterpret_cast< PERL::Session * >(argp1);
+    (arg1)->unsetInputCallback();
+    
+    
+    XSRETURN(argvi);
+  fail:
+    
+    SWIG_croak_null();
+  }
+}
+
+
 XS(_wrap_Session_setHangupHook__SWIG_0) {
   {
     PERL::Session *arg1 = (PERL::Session *) 0 ;
@@ -10602,6 +10629,7 @@ static swig_command_info swig_commands[] = {
 {"freeswitchc::Session_run_dtmf_callback", _wrap_Session_run_dtmf_callback},
 {"freeswitchc::Session_setME", _wrap_Session_setME},
 {"freeswitchc::Session_setInputCallback", _wrap_Session_setInputCallback},
+{"freeswitchc::Session_unsetInputCallback", _wrap_Session_unsetInputCallback},
 {"freeswitchc::Session_setHangupHook", _wrap_Session_setHangupHook},
 {"freeswitchc::Session_ready", _wrap_Session_ready},
 {"freeswitchc::Session_suuid_set", _wrap_Session_suuid_set},
index 74ca3ac0d8e4eaadd3acc3a46dbdd549fd89cf1c..720be0205bddbd3381e404f8128b1abb1fcc30d9 100644 (file)
@@ -323,6 +323,7 @@ class Session(CoreSession):
     def check_hangup_hook(*args): return _freeswitch.Session_check_hangup_hook(*args)
     def run_dtmf_callback(*args): return _freeswitch.Session_run_dtmf_callback(*args)
     def setInputCallback(*args): return _freeswitch.Session_setInputCallback(*args)
+    def unsetInputCallback(*args): return _freeswitch.Session_unsetInputCallback(*args)
     def setHangupHook(*args): return _freeswitch.Session_setHangupHook(*args)
     def ready(*args): return _freeswitch.Session_ready(*args)
     __swig_setmethods__["cb_function"] = _freeswitch.Session_cb_function_set
index df2eb4bfbc2d6f8054699cd4d248bf046eed8c94..f10872e4d7cb83eb9d1165ba0068812a9fd724c9 100644 (file)
@@ -216,6 +216,24 @@ void Session::setHangupHook(PyObject *pyfunc, PyObject *arg)
 
 }
 
+void Session::unsetInputCallback(void)
+{
+       if (cb_function) {
+        Py_XDECREF(cb_function);
+        cb_function = NULL;
+    }
+
+    if (cb_arg) {
+        Py_XDECREF(cb_arg);
+        cb_arg = NULL;
+    }
+       
+       switch_channel_set_private(channel, "CoreSession", NULL);
+       args.input_callback = NULL;
+       ap = NULL;
+       
+}
+
 void Session::setInputCallback(PyObject *cbfunc, PyObject *funcargs)
 {
 
index 8d61407de6c00e67fece998302e99ec9fac85fd6..b7a5c9cf0eb11b393db062bd9e4846b36a2fc9e7 100644 (file)
@@ -30,6 +30,7 @@ class Session : public CoreSession {
 
        virtual switch_status_t run_dtmf_callback(void *input, switch_input_type_t itype);
        void setInputCallback(PyObject *cbfunc, PyObject *funcargs = NULL);
+       void unsetInputCallback(void);
        void setHangupHook(PyObject *pyfunc, PyObject *arg = NULL);
        bool ready();
        
index 4d3bf65faf7c573fee06b23534f09c28e805a537..2bf13206dfcade1040aea56be824ec2837db1562 100644 (file)
@@ -9153,6 +9153,27 @@ fail:
 }
 
 
+SWIGINTERN PyObject *_wrap_Session_unsetInputCallback(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+  PyObject *resultobj = 0;
+  PYTHON::Session *arg1 = (PYTHON::Session *) 0 ;
+  void *argp1 = 0 ;
+  int res1 = 0 ;
+  PyObject * obj0 = 0 ;
+  
+  if (!PyArg_ParseTuple(args,(char *)"O:Session_unsetInputCallback",&obj0)) SWIG_fail;
+  res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_PYTHON__Session, 0 |  0 );
+  if (!SWIG_IsOK(res1)) {
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Session_unsetInputCallback" "', argument " "1"" of type '" "PYTHON::Session *""'"); 
+  }
+  arg1 = reinterpret_cast< PYTHON::Session * >(argp1);
+  (arg1)->unsetInputCallback();
+  resultobj = SWIG_Py_Void();
+  return resultobj;
+fail:
+  return NULL;
+}
+
+
 SWIGINTERN PyObject *_wrap_Session_setHangupHook__SWIG_0(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *resultobj = 0;
   PYTHON::Session *arg1 = (PYTHON::Session *) 0 ;
@@ -9659,6 +9680,7 @@ static PyMethodDef SwigMethods[] = {
         { (char *)"Session_check_hangup_hook", _wrap_Session_check_hangup_hook, METH_VARARGS, NULL},
         { (char *)"Session_run_dtmf_callback", _wrap_Session_run_dtmf_callback, METH_VARARGS, NULL},
         { (char *)"Session_setInputCallback", _wrap_Session_setInputCallback, METH_VARARGS, NULL},
+        { (char *)"Session_unsetInputCallback", _wrap_Session_unsetInputCallback, METH_VARARGS, NULL},
         { (char *)"Session_setHangupHook", _wrap_Session_setHangupHook, METH_VARARGS, NULL},
         { (char *)"Session_ready", _wrap_Session_ready, METH_VARARGS, NULL},
         { (char *)"Session_cb_function_set", _wrap_Session_cb_function_set, METH_VARARGS, NULL},