LOGMETHOD(anna::TraceMethod tttm("anna::oam::Module", "initializeCounterScope", ANNA_FILE_LOCATION));
// Order of use:
- if(a_counters.size() != 0) // any counter have been registered
- throw anna::RuntimeException("After use of counter registration can't initialize more scope ids!. Do initializations firstly", ANNA_FILE_LOCATION);
+ // https://redmine.teslayout.com/issues/48
+ //if(a_counters.size() != 0) // any counter have been registered
+ // throw anna::RuntimeException("After use of counter registration can't initialize more scope ids!. Do initializations firstly", ANNA_FILE_LOCATION);
// Scope range: 0 - 99
if(scopeId < 0 || scopeId >= MaxScope) {
//------------------------------------- Module::RecordingGuard::RecordingGuard()
//------------------------------------------------------------------------------
anna::oam::Module::RecordingGuard::RecordingGuard(anna::oam::Module* module) :
- a_module(module) {
- module->a_counterRecording = true;
-}
-
+ a_module(module) {
+ module->a_counterRecording = true;
+}
+
//------------------------------------------------------------------------------
//------------------------------------ Module::RecordingGuard::~RecordingGuard()
//------------------------------------------------------------------------------
-anna::oam::Module::RecordingGuard::~RecordingGuard() {
- a_module->a_counterRecording = false;
-}
+anna::oam::Module::RecordingGuard::~RecordingGuard() {
+ a_module->a_counterRecording = false;
+}
//------------------------------------------------------------------------------
for(const_counter_iterator cnt_it = counter_begin(); cnt_it != counter_end(); cnt_it++) {
ptrCounterData = (counter_data_t *) & ((*cnt_it).second);
+
+ // Counter registered ?
+ int offset = ptrCounterData->Offset;
+ unsigned long long int accValue = 0ULL;
+ try {
+ const anna::oam::CounterScope *csAux = scope(scope_it);
+ accValue = csAux->getAccValue(offset);
+ } catch(anna::RuntimeException &ex) {
+ ex.trace();
+ continue;
+ }
+
// Counter:
trace += "\n\tType: "; trace += anna::functions::asString((*cnt_it).first);
trace += " | Description: '"; trace += ptrCounterData->Description; trace += "'";
- int offset = ptrCounterData->Offset;
int realId = (1000 * scopeId) + offset;
trace += " | ScopeId/Offset: "; trace += anna::functions::asString(scopeId); trace += "/"; trace += anna::functions::asString(offset);
trace += " | RealId: "; trace += anna::functions::asString(realId);
- unsigned long long int accValue = scope(scope_it)->getAccValue(offset);
+ accValue = scope(scope_it)->getAccValue(offset);
if(accValue != 0ULL) {
trace += " | AccumulatedAmount: ";
for(const_counter_iterator cnt_it = counter_begin(); cnt_it != counter_end(); cnt_it++) {
ptrCounterData = (counter_data_t *) & ((*cnt_it).second);
+
+ // Counter registered ?
+ int offset = ptrCounterData->Offset;
+ unsigned long long int accValue = 0ULL;
+ try {
+ const anna::oam::CounterScope *csAux = scope(scope_it);
+ accValue = csAux->getAccValue(offset);
+ } catch(anna::RuntimeException &ex) {
+ ex.trace();
+ continue;
+ }
+
// Counter:
anna::xml::Node* counter = registeredCounters->createChild("Counter");
counter->createAttribute("Type", anna::functions::asString((*cnt_it).first));
counter->createAttribute("Description", ptrCounterData->Description);
- int offset = ptrCounterData->Offset;
int realId = (1000 * scopeId) + offset;
counter->createAttribute("ScopeId", anna::functions::asString(scopeId));
counter->createAttribute("Offset", anna::functions::asString(offset));
counter->createAttribute("RealId", anna::functions::asString(realId));
- unsigned long long int accValue = scope(scope_it)->getAccValue(offset);
if(accValue != 0ULL)
counter->createAttribute("AccumulatedAmount", anna::functions::asString("%llu", accValue));