From 00e272207a2ba14f2caf38d59e9ac6bf3dde6883 Mon Sep 17 00:00:00 2001 From: Stefan Sayer Date: Mon, 20 Jul 2009 17:26:09 +0000 Subject: [PATCH] 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 --- apps/dsm/DSMStateEngine.cpp | 13 ++++++++++++- core/ampi/MonitoringAPI.h | 2 +- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/apps/dsm/DSMStateEngine.cpp b/apps/dsm/DSMStateEngine.cpp index b0d1ddf7..f609f960 100644 --- a/apps/dsm/DSMStateEngine.cpp +++ b/apps/dsm/DSMStateEngine.cpp @@ -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()); diff --git a/core/ampi/MonitoringAPI.h b/core/ampi/MonitoringAPI.h index c905e74c..6b0163e7 100644 --- a/core/ampi/MonitoringAPI.h +++ b/core/ampi/MonitoringAPI.h @@ -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)); \