From 6d7b4de9a5e2d7e65a2f6760632e594df1ceef50 Mon Sep 17 00:00:00 2001 From: Stefan Sayer Date: Mon, 7 Dec 2009 16:40:04 +0000 Subject: [PATCH] logSelects, logParams, logAll actions git-svn-id: http://svn.berlios.de/svnroot/repos/sems/trunk@1626 8eb893ce-cfd4-0310-b710-fb5ebe64c474 --- apps/dsm/DSMCoreModule.cpp | 78 ++++++++++++++++++++++++++++++++++--- apps/dsm/DSMCoreModule.h | 3 ++ apps/dsm/doc/dsm_syntax.txt | 6 +++ 3 files changed, 82 insertions(+), 5 deletions(-) diff --git a/apps/dsm/DSMCoreModule.cpp b/apps/dsm/DSMCoreModule.cpp index dae04975..a6e3353b 100644 --- a/apps/dsm/DSMCoreModule.cpp +++ b/apps/dsm/DSMCoreModule.cpp @@ -75,6 +75,9 @@ DSMAction* DSMCoreModule::getAction(const string& from_str) { DEF_CMD("log", SCLogAction); DEF_CMD("clear", SCClearAction); DEF_CMD("logVars", SCLogVarsAction); + DEF_CMD("logParams", SCLogParamsAction); + DEF_CMD("logSelects", SCLogSelectsAction); + DEF_CMD("logAll", SCLogAllAction); DEF_CMD("setTimer", SCSetTimerAction); DEF_CMD("removeTimer", SCRemoveTimerAction); @@ -344,7 +347,6 @@ DSMAction::SEAction SCReturnFSMAction::getSEAction(string& param) { CONST_ACTION_2P(SCLogAction, ',', false); EXEC_ACTION_START(SCLogAction) { - unsigned int lvl; if (str2i(resolveVars(par1, sess, sc_sess, event_params), lvl)) { ERROR("unknown log level '%s'\n", par1.c_str()); @@ -355,11 +357,12 @@ EXEC_ACTION_START(SCLogAction) { l_line.c_str()); } EXEC_ACTION_END; -EXEC_ACTION_START(SCLogVarsAction) { +void log_vars(const string& l_arg, AmSession* sess, + DSMSession* sc_sess, map* event_params) { unsigned int lvl; - if (str2i(resolveVars(arg, sess, sc_sess, event_params), lvl)) { - ERROR("unknown log level '%s'\n", arg.c_str()); - return false; + if (str2i(resolveVars(l_arg, sess, sc_sess, event_params), lvl)) { + ERROR("unknown log level '%s'\n", l_arg.c_str()); + return; } _LOG((int)lvl, "FSM: variables set ---\n"); @@ -368,6 +371,71 @@ EXEC_ACTION_START(SCLogVarsAction) { _LOG((int)lvl, "FSM: $%s='%s'\n", it->first.c_str(), it->second.c_str()); } _LOG((int)lvl, "FSM: variables end ---\n"); +} + +EXEC_ACTION_START(SCLogVarsAction) { + log_vars(arg, sess, sc_sess, event_params); +} EXEC_ACTION_END; + +void log_params(const string& l_arg, AmSession* sess, + DSMSession* sc_sess, map* event_params) { + unsigned int lvl; + if (str2i(resolveVars(l_arg, sess, sc_sess, event_params), lvl)) { + ERROR("unknown log level '%s'\n", l_arg.c_str()); + return; + } + + if (NULL == event_params) { + _LOG((int)lvl, "FSM: no event params ---\n"); + return; + } + + _LOG((int)lvl, "FSM: params set ---\n"); + for (map::iterator it = + event_params->begin(); it != event_params->end(); it++) { + _LOG((int)lvl, "FSM: #%s='%s'\n", it->first.c_str(), it->second.c_str()); + } + _LOG((int)lvl, "FSM: params end ---\n"); +} + +EXEC_ACTION_START(SCLogParamsAction) { + log_params(arg, sess, sc_sess, event_params); +} EXEC_ACTION_END; + + +void log_selects(const string& l_arg, AmSession* sess, + DSMSession* sc_sess, map* event_params) { + unsigned int lvl; + if (str2i(resolveVars(l_arg, sess, sc_sess, event_params), lvl)) { + ERROR("unknown log level '%s'\n", l_arg.c_str()); + return; + } + + _LOG((int)lvl, "FSM: selects set ---\n"); + +#define SELECT_LOG(select_name) \ + _LOG((int)lvl, "FSM: @%s='%s'\n", select_name, \ + resolveVars("@" select_name, sess, sc_sess, event_params).c_str()); + + SELECT_LOG("local_tag"); + SELECT_LOG("user"); + SELECT_LOG("domain"); + SELECT_LOG("remote_tag"); + SELECT_LOG("callid"); + SELECT_LOG("local_uri"); + SELECT_LOG("remote_uri"); +#undef SELECT_LOG + _LOG((int)lvl, "FSM: selects end ---\n"); +} + +EXEC_ACTION_START(SCLogSelectsAction) { + log_selects(arg, sess, sc_sess, event_params); +} EXEC_ACTION_END; + +EXEC_ACTION_START(SCLogAllAction) { + log_vars(arg, sess, sc_sess, event_params); + log_params(arg, sess, sc_sess, event_params); + log_selects(arg, sess, sc_sess, event_params); } EXEC_ACTION_END; CONST_ACTION_2P(SCSetAction,'=', false); diff --git a/apps/dsm/DSMCoreModule.h b/apps/dsm/DSMCoreModule.h index 5535a7c9..0c3129ed 100644 --- a/apps/dsm/DSMCoreModule.h +++ b/apps/dsm/DSMCoreModule.h @@ -83,6 +83,9 @@ DEF_ACTION_1P(SCRemoveTimerAction); DEF_ACTION_1P(SCRemoveTimersAction); DEF_ACTION_2P(SCLogAction); DEF_ACTION_1P(SCLogVarsAction); +DEF_ACTION_1P(SCLogParamsAction); +DEF_ACTION_1P(SCLogSelectsAction); +DEF_ACTION_1P(SCLogAllAction); DEF_ACTION_2P(SCGetVarAction); DEF_ACTION_2P(SCSetVarAction); DEF_ACTION_2P(SCPlayFileAction); diff --git a/apps/dsm/doc/dsm_syntax.txt b/apps/dsm/doc/dsm_syntax.txt index 6a4e04d0..567f9c6b 100644 --- a/apps/dsm/doc/dsm_syntax.txt +++ b/apps/dsm/doc/dsm_syntax.txt @@ -129,6 +129,12 @@ core actions: e.g. log(1, $var1) -- log all variables: logVars(level) + -- log all selects: + logSelects(level) + -- log all Params (only in actions of a transition): + logParams(level) + -- log everything: + logAll(level) setTimer(timer_id, timeout) e.g. setTimer(1, $timeout)