missing API file for monitoring

git-svn-id: http://svn.berlios.de/svnroot/repos/sems/trunk@1277 8eb893ce-cfd4-0310-b710-fb5ebe64c474
sayer/1.4-spce2.6
Stefan Sayer 18 years ago
parent a905c29fa2
commit 47ae57f469

@ -0,0 +1,128 @@
#ifndef _MONITORING_API_H
#define _MONITORING_API_H
/*
* macros to make monitoring easy to use and not
* mess up source code too much
*/
#ifdef USE_MONITORING
#define MONITORING_LOG(callid, property, value) \
if (NULL != AmSessionContainer::monitoring_di) { \
AmArg di_args,ret; \
di_args.push(AmArg(callid)); \
di_args.push(AmArg(property)); \
di_args.push(AmArg(value)); \
AmSessionContainer::monitoring_di->invoke("log", di_args, ret); \
} \
// hm... there must be a better method for this...
#define MONITORING_LOG2(AmSessionContainer, callid, prop1, val1, prop2, val2) \
if (NULL != AmSessionContainer::monitoring_di) { \
AmArg di_args,ret; \
di_args.push(AmArg(callid)); \
di_args.push(AmArg(prop1)); \
di_args.push(AmArg(val1)); \
di_args.push(AmArg(prop2)); \
di_args.push(AmArg(val2)); \
AmSessionContainer::monitoring_di->invoke("log", di_args, ret); \
} \
#define MONITORING_LOG3(callid, prop1, val1, prop2, val2, prop3, val3) \
if (NULL != AmSessionContainer::monitoring_di) { \
AmArg di_args,ret; \
di_args.push(AmArg(callid)); \
di_args.push(AmArg(prop1)); \
di_args.push(AmArg(val1)); \
di_args.push(AmArg(prop2)); \
di_args.push(AmArg(val2)); \
di_args.push(AmArg(prop3)); \
di_args.push(AmArg(val3)); \
AmSessionContainer::monitoring_di->invoke("log", di_args, ret); \
} \
#define MONITORING_LOG4(callid, prop1, val1, prop2, val2, prop3, val3, prop4, val4) \
if (NULL != AmSessionContainer::monitoring_di) { \
AmArg di_args,ret; \
di_args.push(AmArg(callid)); \
di_args.push(AmArg(prop1)); \
di_args.push(AmArg(val1)); \
di_args.push(AmArg(prop2)); \
di_args.push(AmArg(val2)); \
di_args.push(AmArg(prop3)); \
di_args.push(AmArg(val3)); \
di_args.push(AmArg(prop4)); \
di_args.push(AmArg(val4)); \
AmSessionContainer::monitoring_di->invoke("log", di_args, ret); \
} \
#define MONITORING_LOG5(callid, prop1, val1, prop2, val2, prop3, val3, prop4, val4, prop5, val5) \
if (NULL != AmSessionContainer::monitoring_di) { \
AmArg di_args,ret; \
di_args.push(AmArg(callid)); \
di_args.push(AmArg(prop1)); \
di_args.push(AmArg(val1)); \
di_args.push(AmArg(prop2)); \
di_args.push(AmArg(val2)); \
di_args.push(AmArg(prop3)); \
di_args.push(AmArg(val3)); \
di_args.push(AmArg(prop4)); \
di_args.push(AmArg(val4)); \
di_args.push(AmArg(prop5)); \
di_args.push(AmArg(val5)); \
AmSessionContainer::monitoring_di->invoke("log", di_args, ret); \
} \
#define MONITORING_LOG_ADD(callid, property, value) \
if (NULL != AmSessionContainer::monitoring_di) { \
AmArg di_args,ret; \
di_args.push(AmArg(callid)); \
di_args.push(AmArg(property)); \
di_args.push(AmArg(value)); \
AmSessionContainer::monitoring_di->invoke("logAdd", di_args, ret); \
} \
#define MONITORING_MARK_FINISHED(callid) \
if (NULL != AmSessionContainer::monitoring_di) { \
AmArg di_args,ret; \
di_args.push(AmArg(callid)); \
AmSessionContainer::monitoring_di->invoke("markFinished", di_args, ret); \
} \
// it is always using AmSessionContainer::monitoring_di, thus these should
// not be necessary in apps
#define _MONITORING_DECLARE_INTERFACE(MOD) \
AmDynInvoke* MOD::monitoring_di = 0; \
#define _MONITORING_DEFINE_INTERFACE \
static AmDynInvoke* monitoring_di; \
#define _MONITORING_INIT \
AmDynInvokeFactory* monitoring_fact= AmPlugIn::instance()->getFactory4Di("monitoring"); \
if(!monitoring_fact) { \
INFO("monitoring module not loaded, monitoring disabled\n"); \
} else { \
monitoring_di = monitoring_fact->getInstance(); \
assert(monitoring_di); \
INFO("monitoring enabled\n"); \
} \
#else
#define _MONITORING_DECLARE_INTERFACE(MOD)
#define _MONITORING_DEFINE_INTERFACE
#define _MONITORING_INIT
#define MONITORING_LOG(callid, property, value)
#define MONITORING_LOG2(callid, prop1, val1, prop2, val2)
#define MONITORING_LOG3(callid, prop1, val1, prop2, val2, prop3, val3)
#define MONITORING_LOG4(callid, prop1, val1, prop2, val2, prop3, val3, prop4, val4)
#define MONITORING_LOG5(callid, prop1, val1, prop2, val2, prop3, val3, prop4, val4, prop5, val5)
#define MONITORING_LOG_ADD(callid, property, value)
#define MONITORING_MARK_FINISHED(callid)
#endif
#endif
Loading…
Cancel
Save