basic monitoring support for DSM: dsm_diag and dsm_state contain current FSM/state

git-svn-id: http://svn.berlios.de/svnroot/repos/sems/trunk@1475 8eb893ce-cfd4-0310-b710-fb5ebe64c474
sayer/1.4-spce2.6
Stefan Sayer 17 years ago
parent fedfc4745e
commit 00e272207a

@ -32,6 +32,8 @@
#include "AmSession.h"
#include "log.h"
#include "AmSessionContainer.h"
#include "ampi/MonitoringAPI.h"
DSMStateDiagram::DSMStateDiagram(const string& name)
: name(name) {
@ -205,7 +207,7 @@ bool DSMStateEngine::init(AmSession* sess, const string& startDiagram,
ERROR("initializing with start diag '%s'\n",
startDiagram.c_str());
return false;
}
}
DBG("run init event...\n");
runEvent(sess, init_event, NULL);
@ -301,6 +303,7 @@ void DSMStateEngine::runEvent(AmSession* sess,
break;
}
DBG("changing to new state '%s'\n", target_st->name.c_str());
MONITORING_LOG(sess->getLocalTag().c_str(), "dsm_state", target_st->name.c_str());
current = target_st;
// execute pre-actions
@ -344,6 +347,9 @@ bool DSMStateEngine::jumpDiag(const string& diag_name, AmSession* sess,
diag_name.c_str());
return false;
}
MONITORING_LOG2(sess->getLocalTag().c_str(),
"dsm_diag", diag_name.c_str(),
"dsm_state", current->name.c_str());
// execute pre-actions
DBG("running %zd pre_actions of init state '%s'\n",
@ -370,6 +376,11 @@ bool DSMStateEngine::returnDiag(AmSession* sess) {
current_diag = stack.back().first;
current = stack.back().second;
stack.pop_back();
MONITORING_LOG2(sess->getLocalTag().c_str(),
"dsm_diag", current_diag->getName().c_str(),
"dsm_state", current->name.c_str());
DBG("returned to diag '%s' state '%s'\n",
current_diag->getName().c_str(),
current->name.c_str());

@ -19,7 +19,7 @@
} \
// hm... there must be a better method for this...
#define MONITORING_LOG2(AmSessionContainer, callid, prop1, val1, prop2, val2) \
#define MONITORING_LOG2(callid, prop1, val1, prop2, val2) \
if (NULL != AmSessionContainer::monitoring_di) { \
AmArg di_args,ret; \
di_args.push(AmArg(callid)); \

Loading…
Cancel
Save