From eb9da34377130db968913fcda139070d47053d88 Mon Sep 17 00:00:00 2001 From: Hugh Waite Date: Wed, 12 Aug 2015 17:51:25 +0100 Subject: [PATCH] app_lua: Export more sdpops functions to LUA - sdp_with_active_media - sdp_with_transport - sdp_with_codecs_by_id - sdp_with_codecs_by_name - sdp_with_ice - sdp_keep_codecs_by_id - sdp_keep_codecs_by_name - sdp_remove_media - sdp_remove_transport - sdp_remove_line_by_prefix - sdp_remove_codecs_by_id - sdp_remove_codecs_by_name --- modules/app_lua/app_lua_exp.c | 462 +++++++++++++++++++++++++++++++++- 1 file changed, 461 insertions(+), 1 deletion(-) diff --git a/modules/app_lua/app_lua_exp.c b/modules/app_lua/app_lua_exp.c index ca9856f1a08..4a6426e76fa 100644 --- a/modules/app_lua/app_lua_exp.c +++ b/modules/app_lua/app_lua_exp.c @@ -1814,11 +1814,471 @@ static int lua_sr_sdpops_with_media(lua_State *L) return app_lua_return_int(L, ret); } +/** + * + */ +static int lua_sr_sdpops_with_active_media(lua_State *L) +{ + int ret; + str media; + sr_lua_env_t *env_L; + + env_L = sr_lua_env_get(); + + if(!(_sr_lua_exp_reg_mods&SR_LUA_EXP_MOD_SDPOPS)) + { + LM_WARN("weird: sdpops function executed but module not registered\n"); + return app_lua_return_error(L); + } + + if(env_L->msg==NULL) + { + LM_WARN("invalid parameters from Lua env\n"); + return app_lua_return_error(L); + } + + if(lua_gettop(L)!=1) + { + LM_ERR("incorrect number of arguments\n"); + return app_lua_return_error(L); + } + + media.s = (char*)lua_tostring(L, -1); + media.len = strlen(media.s); + + ret = _lua_sdpopsb.sdp_with_active_media(env_L->msg, &media); + + return app_lua_return_int(L, ret); +} + +/** + * + */ +static int lua_sr_sdpops_with_transport(lua_State *L) +{ + int ret; + str transport; + sr_lua_env_t *env_L; + + env_L = sr_lua_env_get(); + + if(!(_sr_lua_exp_reg_mods&SR_LUA_EXP_MOD_SDPOPS)) + { + LM_WARN("weird: sdpops function executed but module not registered\n"); + return app_lua_return_error(L); + } + + if(env_L->msg==NULL) + { + LM_WARN("invalid parameters from Lua env\n"); + return app_lua_return_error(L); + } + + if(lua_gettop(L)!=1) + { + LM_ERR("incorrect number of arguments\n"); + return app_lua_return_error(L); + } + + transport.s = (char*)lua_tostring(L, -1); + transport.len = strlen(transport.s); + + ret = _lua_sdpopsb.sdp_with_transport(env_L->msg, &transport, 0); + + return app_lua_return_int(L, ret); +} + +/** + * + */ +static int lua_sr_sdpops_with_codecs_by_id(lua_State *L) +{ + int ret; + str codecs; + sr_lua_env_t *env_L; + + env_L = sr_lua_env_get(); + + if(!(_sr_lua_exp_reg_mods&SR_LUA_EXP_MOD_SDPOPS)) + { + LM_WARN("weird: sdpops function executed but module not registered\n"); + return app_lua_return_error(L); + } + + if(env_L->msg==NULL) + { + LM_WARN("invalid parameters from Lua env\n"); + return app_lua_return_error(L); + } + + if(lua_gettop(L)!=1) + { + LM_ERR("incorrect number of arguments\n"); + return app_lua_return_error(L); + } + + codecs.s = (char*)lua_tostring(L, -1); + codecs.len = strlen(codecs.s); + + ret = _lua_sdpopsb.sdp_with_codecs_by_id(env_L->msg, &codecs); + + return app_lua_return_int(L, ret); +} + +/** + * + */ +static int lua_sr_sdpops_with_codecs_by_name(lua_State *L) +{ + int ret; + str codecs; + sr_lua_env_t *env_L; + + env_L = sr_lua_env_get(); + + if(!(_sr_lua_exp_reg_mods&SR_LUA_EXP_MOD_SDPOPS)) + { + LM_WARN("weird: sdpops function executed but module not registered\n"); + return app_lua_return_error(L); + } + + if(env_L->msg==NULL) + { + LM_WARN("invalid parameters from Lua env\n"); + return app_lua_return_error(L); + } + + if(lua_gettop(L)!=1) + { + LM_ERR("incorrect number of arguments\n"); + return app_lua_return_error(L); + } + + codecs.s = (char*)lua_tostring(L, -1); + codecs.len = strlen(codecs.s); + + ret = _lua_sdpopsb.sdp_with_codecs_by_name(env_L->msg, &codecs); + + return app_lua_return_int(L, ret); +} + +/** + * + */ +static int lua_sr_sdpops_with_ice(lua_State *L) +{ + int ret; + sr_lua_env_t *env_L; + + env_L = sr_lua_env_get(); + + if(!(_sr_lua_exp_reg_mods&SR_LUA_EXP_MOD_SDPOPS)) + { + LM_WARN("weird: sdpops function executed but module not registered\n"); + return app_lua_return_error(L); + } + + if(env_L->msg==NULL) + { + LM_WARN("invalid parameters from Lua env\n"); + return app_lua_return_error(L); + } + + if(lua_gettop(L)!=0) + { + LM_ERR("incorrect number of arguments\n"); + return app_lua_return_error(L); + } + + ret = _lua_sdpopsb.sdp_with_ice(env_L->msg); + + return app_lua_return_int(L, ret); +} + +/** + * + */ +static int lua_sr_sdpops_keep_codecs_by_id(lua_State *L) +{ + int ret; + str codecs; + str media; + sr_lua_env_t *env_L; + + env_L = sr_lua_env_get(); + + if(!(_sr_lua_exp_reg_mods&SR_LUA_EXP_MOD_SDPOPS)) + { + LM_WARN("weird: sdpops function executed but module not registered\n"); + return app_lua_return_error(L); + } + + if(env_L->msg==NULL) + { + LM_WARN("invalid parameters from Lua env\n"); + return app_lua_return_error(L); + } + + if(lua_gettop(L)!=2) + { + LM_ERR("incorrect number of arguments\n"); + return app_lua_return_error(L); + } + + codecs.s = (char*)lua_tostring(L, -2); + codecs.len = strlen(codecs.s); + + media.s = (char*)lua_tostring(L, -1); + media.len = strlen(media.s); + + ret = _lua_sdpopsb.sdp_keep_codecs_by_id(env_L->msg, &codecs, &media); + + return app_lua_return_int(L, ret); +} + +/** + * + */ +static int lua_sr_sdpops_keep_codecs_by_name(lua_State *L) +{ + int ret; + str media; + str codecs; + sr_lua_env_t *env_L; + + env_L = sr_lua_env_get(); + + if(!(_sr_lua_exp_reg_mods&SR_LUA_EXP_MOD_SDPOPS)) + { + LM_WARN("weird: sdpops function executed but module not registered\n"); + return app_lua_return_error(L); + } + + if(env_L->msg==NULL) + { + LM_WARN("invalid parameters from Lua env\n"); + return app_lua_return_error(L); + } + + if(lua_gettop(L)!=2) + { + LM_ERR("incorrect number of arguments\n"); + return app_lua_return_error(L); + } + + codecs.s = (char*)lua_tostring(L, -2); + codecs.len = strlen(codecs.s); + + media.s = (char*)lua_tostring(L, -1); + media.len = strlen(media.s); + + ret = _lua_sdpopsb.sdp_keep_codecs_by_name(env_L->msg, &codecs, &media); + + return app_lua_return_int(L, ret); +} + +/** + * + */ +static int lua_sr_sdpops_remove_media(lua_State *L) +{ + int ret; + str media; + sr_lua_env_t *env_L; + + env_L = sr_lua_env_get(); + + if(!(_sr_lua_exp_reg_mods&SR_LUA_EXP_MOD_SDPOPS)) + { + LM_WARN("weird: sdpops function executed but module not registered\n"); + return app_lua_return_error(L); + } + + if(env_L->msg==NULL) + { + LM_WARN("invalid parameters from Lua env\n"); + return app_lua_return_error(L); + } + + if(lua_gettop(L)!=1) + { + LM_ERR("incorrect number of arguments\n"); + return app_lua_return_error(L); + } + + media.s = (char*)lua_tostring(L, -1); + media.len = strlen(media.s); + + ret = _lua_sdpopsb.sdp_remove_media(env_L->msg, &media); + + return app_lua_return_int(L, ret); +} + +/** + * + */ +static int lua_sr_sdpops_remove_transport(lua_State *L) +{ + int ret; + str transport; + sr_lua_env_t *env_L; + + env_L = sr_lua_env_get(); + + if(!(_sr_lua_exp_reg_mods&SR_LUA_EXP_MOD_SDPOPS)) + { + LM_WARN("weird: sdpops function executed but module not registered\n"); + return app_lua_return_error(L); + } + + if(env_L->msg==NULL) + { + LM_WARN("invalid parameters from Lua env\n"); + return app_lua_return_error(L); + } + + if(lua_gettop(L)!=1) + { + LM_ERR("incorrect number of arguments\n"); + return app_lua_return_error(L); + } + + transport.s = (char*)lua_tostring(L, -1); + transport.len = strlen(transport.s); + + ret = _lua_sdpopsb.sdp_remove_transport(env_L->msg, &transport); + + return app_lua_return_int(L, ret); +} + +/** + * + */ +static int lua_sr_sdpops_remove_line_by_prefix(lua_State *L) +{ + int ret; + str media; + sr_lua_env_t *env_L; + + env_L = sr_lua_env_get(); + + if(!(_sr_lua_exp_reg_mods&SR_LUA_EXP_MOD_SDPOPS)) + { + LM_WARN("weird: sdpops function executed but module not registered\n"); + return app_lua_return_error(L); + } + + if(env_L->msg==NULL) + { + LM_WARN("invalid parameters from Lua env\n"); + return app_lua_return_error(L); + } + + if(lua_gettop(L)!=1) + { + LM_ERR("incorrect number of arguments\n"); + return app_lua_return_error(L); + } + + media.s = (char*)lua_tostring(L, -1); + media.len = strlen(media.s); + + ret = _lua_sdpopsb.sdp_remove_line_by_prefix(env_L->msg, &media); + + return app_lua_return_int(L, ret); +} + +/** + * + */ +static int lua_sr_sdpops_remove_codecs_by_id(lua_State *L) +{ + int ret; + str codecs; + sr_lua_env_t *env_L; + + env_L = sr_lua_env_get(); + + if(!(_sr_lua_exp_reg_mods&SR_LUA_EXP_MOD_SDPOPS)) + { + LM_WARN("weird: sdpops function executed but module not registered\n"); + return app_lua_return_error(L); + } + + if(env_L->msg==NULL) + { + LM_WARN("invalid parameters from Lua env\n"); + return app_lua_return_error(L); + } + + if(lua_gettop(L)!=1) + { + LM_ERR("incorrect number of arguments\n"); + return app_lua_return_error(L); + } + + codecs.s = (char*)lua_tostring(L, -1); + codecs.len = strlen(codecs.s); + + ret = _lua_sdpopsb.sdp_remove_codecs_by_id(env_L->msg, &codecs); + + return app_lua_return_int(L, ret); +} + +/** + * + */ +static int lua_sr_sdpops_remove_codecs_by_name(lua_State *L) +{ + int ret; + str codecs; + sr_lua_env_t *env_L; + + env_L = sr_lua_env_get(); + + if(!(_sr_lua_exp_reg_mods&SR_LUA_EXP_MOD_SDPOPS)) + { + LM_WARN("weird: sdpops function executed but module not registered\n"); + return app_lua_return_error(L); + } + + if(env_L->msg==NULL) + { + LM_WARN("invalid parameters from Lua env\n"); + return app_lua_return_error(L); + } + + if(lua_gettop(L)!=1) + { + LM_ERR("incorrect number of arguments\n"); + return app_lua_return_error(L); + } + + codecs.s = (char*)lua_tostring(L, -1); + codecs.len = strlen(codecs.s); + + ret = _lua_sdpopsb.sdp_remove_codecs_by_name(env_L->msg, &codecs); + + return app_lua_return_int(L, ret); +} + /** * */ static const luaL_Reg _sr_sdpops_Map [] = { - {"sdp_with_media", lua_sr_sdpops_with_media}, + {"sdp_with_media", lua_sr_sdpops_with_media}, + {"sdp_with_active_media", lua_sr_sdpops_with_active_media}, + {"sdp_with_transport", lua_sr_sdpops_with_transport}, + {"sdp_with_codecs_by_id", lua_sr_sdpops_with_codecs_by_id}, + {"sdp_with_codecs_by_name", lua_sr_sdpops_with_codecs_by_name}, + {"sdp_with_ice", lua_sr_sdpops_with_ice}, + {"sdp_keep_codecs_by_id", lua_sr_sdpops_keep_codecs_by_id}, + {"sdp_keep_codecs_by_name", lua_sr_sdpops_keep_codecs_by_name}, + {"sdp_remove_media", lua_sr_sdpops_remove_media}, + {"sdp_remove_transport", lua_sr_sdpops_remove_transport}, + {"sdp_remove_line_by_prefix", lua_sr_sdpops_remove_line_by_prefix}, + {"sdp_remove_codecs_by_id", lua_sr_sdpops_remove_codecs_by_id}, + {"sdp_remove_codecs_by_name", lua_sr_sdpops_remove_codecs_by_name}, {NULL, NULL} };