add unsetInputCallback method

git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@9296 d0543943-73ff-0310-b7d9-9358b9ac24b2
This commit is contained in:
Brian West 2008-08-14 17:20:34 +00:00
parent 6efa5bdf0d
commit 23c0d9ebbf
11 changed files with 119 additions and 0 deletions

View 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)
{

View 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();

View 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},

View 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;

View 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)
{

View 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;

View 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},

View 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

View 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)
{

View 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();

View 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},