| The Gaudi Framework v27r1

- Main Page
- Related Pages
- Modules
- Namespaces
- Classes
- Files

- Class List
- Class Index
- Class Hierarchy
- Class Members

Classes | Public Types | Public Member Functions | Protected Member Functions | List of all members
ICounterSvc Class Referenceabstract

Create / access multi purpose counters. More...

`#include <GaudiKernel/ICounterSvc.h>`

Inheritance diagram for ICounterSvc:
[legend]
Collaboration diagram for ICounterSvc:
[legend]

## Classes
class | Printout
| Print counters for each element in the range [first, last) e.g. More...

## Public Types
enum | { COUNTER_NOT_PRESENT = 2, COUNTER_EXISTS = 4, COUNTER_REMOVED = 3 }
typedef StatEntity | Counter
| the actual type of counter More...
typedef Stat | CountObject
| Ease the manipulation of counters in a way, that they behave like objects: Avoid: Counter* cnt = ...; ++(*cnt);. More...
typedef std::vector< CountObject > | Counters
| the actual type of vectors of initialized counters More...
Public Types inherited from IInterface
enum | Status { SUCCESS = 1, NO_INTERFACE, VERSMISMATCH, LAST_ERROR }
| Return status. More...
using | iid = Gaudi::InterfaceId< IInterface, 0, 0 >
| Interface ID. More...
using | ext_iids = Gaudi::interface_list< iid >
| Extra interfaces. More...

## Public Member Functions
| DeclareInterfaceID (ICounterSvc, 4, 0)
| InterfaceID. More...
virtual Counter * | get (const std::string &group, const std::string &name) const =0
| Access an existing counter object. More...
virtual Counters | get (const std::string &group) const =0
| get all counters form the given group: More...
virtual StatusCode | create (const std::string &group, const std::string &name, longlong initial_value, Counter *&refpCounter)=0
| Create a new counter object. More...
virtual CountObject | create (const std::string &group, const std::string &name, longlong initial_value=0)=0
| If the counter object exists already, a std::runtime_error exception is thrown. More...
virtual StatusCode | remove (const std::string &group, const std::string &name)=0
| Remove a counter object. More...
virtual StatusCode | remove (const std::string &group)=0
| Remove all counters of a given group. More...
virtual StatusCode | print (const std::string &group, const std::string &name, Printout &printer) const =0
| Print counter value. More...
virtual StatusCode | print (const std::string &group, Printout &printer) const =0
| If no such counter exists the return code is COUNTER_NOT_PRESENT Note: This call is not direct access. More...
virtual StatusCode | print (const Counter *pCounter, Printout &printer) const =0
| Print counter value. More...
virtual StatusCode | print (const CountObject &pCounter, Printout &printer) const =0
| Print counter value. More...
virtual StatusCode | print (Printout &printer) const =0
virtual StatusCode | defaultPrintout (MsgStream &log, const Counter *pCounter) const =0
| Default Printout for counters. More...
Public Member Functions inherited from IInterface
virtual void * | i_cast (const InterfaceID &) const =0
| main cast function More...
virtual std::vector< std::string > | getInterfaceNames () const =0
| Returns a vector of strings containing the names of all the implemented interfaces. More...
virtual unsigned long | addRef ()=0
| Increment the reference count of Interface instance. More...
virtual unsigned long | release ()=0
| Release Interface instance. More...
virtual unsigned long | refCount () const =0
| Current reference count. More...
virtual StatusCode | queryInterface (const InterfaceID &ti, void **pp)=0
| Set the void** to the pointer to the requested interface of the instance. More...
virtual | ~IInterface ()=default
| Virtual destructor. More...

## Protected Member Functions
virtual | ~ICounterSvc ()=default
| protected virtual destructor More...

## Additional Inherited Members
Static Public Member Functions inherited from IInterface
static const InterfaceID & | interfaceID ()
| Return an instance of InterfaceID identifying the interface. More...

## Detailed Description

Create / access multi purpose counters.

## Counter Creation:

// counter creation:
ICounterSvc::CountObject obj = svc->create("AlgName","NumExecuted",0);
obj++;
obj += 10;
ICounterSvc::Counter* m_counter = obj.counter();
// ICounterSvc::Counter* m_counter = obj ; ///< the same
ICounterSvc::Counter* m_counter = 0;
if ( svc->create("AlgName","NumExecuted",0, m_counter).isSuccess() )
{
CountObject obj(m_counter);
obj++;
}

## Counter access:

ICounterSvc::Counter* m_counter = svc->get("AlgName","NumExecuted");
if ( m_counter ) {....}
// or:
try {
ICounterSvc::CountObject obj(svc->get("AlgName","NumExecuted"));
obj++;
}
catch(std::invalid_argument e) {
...handle exception ...
}

Author
  Markus Frank
  modified by Vanya BELYAEV ibely.nosp@m.aev@.nosp@m.physi.nosp@m.cs.s.nosp@m.yr.ed.nosp@m.u

Version
  3.0

Definition at line 75 of file ICounterSvc.h.

## Member Typedef Documentation

typedef StatEntity ICounterSvc::Counter

the actual type of counter

See also
  StatEntity

Definition at line 81 of file ICounterSvc.h.

typedef std::vector<CountObject> ICounterSvc::Counters

the actual type of vectors of initialized counters

Definition at line 99 of file ICounterSvc.h.

typedef Stat ICounterSvc::CountObject

Ease the manipulation of counters in a way, that they behave like objects: Avoid: Counter* cnt = ...; ++(*cnt);.

Instead: Counter* cnt = ...; CountObject obj(cnt); ++cnt;

Note: No inheritance! This class has no virtual destructor

Author
  Markus Frank

Version
  1.0

Definition at line 97 of file ICounterSvc.h.

## Member Enumeration Documentation

anonymous enum

Enumerator
COUNTER_NOT_PRESENT |
COUNTER_EXISTS |
COUNTER_REMOVED |

Definition at line 249 of file ICounterSvc.h.

249 { COUNTER_NOT_PRESENT = 2, // Error
250 COUNTER_EXISTS = 4, // Error ?
251 COUNTER_REMOVED = 3 // Type of success. Low bit set
252 } ;
ICounterSvc::COUNTER_NOT_PRESENT
Definition: ICounterSvc.h:249
ICounterSvc::COUNTER_EXISTS
Definition: ICounterSvc.h:250
ICounterSvc::COUNTER_REMOVED
Definition: ICounterSvc.h:251

## Constructor & Destructor Documentation

virtual ICounterSvc::~ICounterSvc | ( |  | ) |
| protected virtual default

protected virtual destructor

protected virtual destructor

## Member Function Documentation

virtual StatusCode ICounterSvc::create | ( | const std::string & | group,
|  | const std::string & | name,
|  | longlong | initial_value,
|  | Counter *& | refpCounter
| ) |  |
| pure virtual

Create a new counter object.

If the counter object exists already the existing object is returned. In this event the return code is COUNTER_EXISTS. The ownership of the actual counter stays with the service.

Parameters

  group | [IN] Hint for smart printing
  name | [IN] Counter name
  initial_value | [IN] Initial counter value
  refpCounter | [OUT] Reference to store pointer to counter.

Returns
  StatusCode indicating failure or success.

virtual CountObject ICounterSvc::create | ( | const std::string & | group,
|  | const std::string & | name,
|  | longlong | initial_value = `0`
| ) |  |
| pure virtual

If the counter object exists already, a std::runtime_error exception is thrown.

The ownership of the actual counter stays with the service.

Parameters

  group | [IN] Hint for smart printing
  name | [IN] Counter name
  initial_value | [IN] Initial counter value
  refpCounter | [OUT] Reference to store pointer to counter.

Returns
  Fully initialized CountObject.

ICounterSvc::DeclareInterfaceID | ( | ICounterSvc | ,
|  | 4 | ,
|  | 0 |
| ) |  |

InterfaceID.

virtual StatusCode ICounterSvc::defaultPrintout | ( | MsgStream & | log,
|  | const Counter * | pCounter
| ) |  | const
| pure virtual

Default Printout for counters.

virtual Counter* ICounterSvc::get | ( | const std::string & | group,
|  | const std::string & | name
| ) |  | const
| pure virtual

Access an existing counter object.

Parameters

  group | [IN] Hint for smart printing
  name | [IN] Counter name
  createIf | [IN] flag to indicate the creation if not counter found

Returns
  Pointer to existing counter object (NULL if non existing).

virtual Counters ICounterSvc::get | ( | const std::string & | group | ) | const
| pure virtual

get all counters form the given group:

ICounterSvc::Counters cnts = svc->get("Efficiency") ;
MsgStream& stream = ... ;
for ( ICounterSvc::Counters::const_iterator ic = cnts.begin() ;
cnts.end() != ic ; ++ic )
{
stream << (*ic) << endmsg ;
}

See also
  ICounterSvc::Counters

Parameters

  gorup | the gorup name

Returns
  vector of the properly initialized counters

virtual StatusCode ICounterSvc::print | ( | const std::string & | group,
|  | const std::string & | name,
|  | Printout & | printer
| ) |  | const
| pure virtual

Print counter value.

Parameters

  group | [IN] Hint for smart printing
  name | [IN] Counter name
  printer | [IN] Print actor

Returns
  StatusCode indicating failure or success.

virtual StatusCode ICounterSvc::print | ( | const std::string & | group,
|  | Printout & | printer
| ) |  | const
| pure virtual

If no such counter exists the return code is COUNTER_NOT_PRESENT Note: This call is not direct access.

Parameters

  group | [IN] Hint for smart printing
  printer | [IN] Print actor

Returns
  StatusCode indicating failure or success.

virtual StatusCode ICounterSvc::print | ( | const Counter * | pCounter,
|  | Printout & | printer
| ) |  | const
| pure virtual

Print counter value.

Parameters

  pCounter | [IN] Pointer to Counter object
  printer | [IN] Print actor

Returns
  StatusCode indicating failure or success.

virtual StatusCode ICounterSvc::print | ( | const CountObject & | pCounter,
|  | Printout & | printer
| ) |  | const
| pure virtual

Print counter value.

Parameters

  refCounter | [IN] Reference to CountObject object
  printer | [IN] Print actor

Returns
  StatusCode indicating failure or success.

virtual StatusCode ICounterSvc::print | ( | Printout & | printer | ) | const
| pure virtual

Parameters

  printer | [IN] Print actor

Returns
  StatusCode indicating failure or success.

virtual StatusCode ICounterSvc::remove | ( | const std::string & | group,
|  | const std::string & | name
| ) |  |
| pure virtual

Remove a counter object.

If the counter object does not exists, the return code is COUNTER_NOT_PRESENT. The counter may not be used anymore after this call.

Parameters

  group | [IN] Hint for smart printing
  name | [IN] Counter name
  initial_value | [IN] Initial counter value
  refpCounter | [OUT] Reference to store pointer to counter.

Returns
  StatusCode indicating failure or success.

virtual StatusCode ICounterSvc::remove | ( | const std::string & | group | ) |
| pure virtual

Remove all counters of a given group.

If no such counter exists the return code is COUNTER_NOT_PRESENT

Parameters

  group | [IN] Hint for smart printing

Returns
  StatusCode indicating failure or success.

The documentation for this class was generated from the following file:

- GaudiKernel/GaudiKernel/ICounterSvc.h