Gaudi Framework, version v22r2

Home   Generated: Tue May 10 2011
Classes | Public Types | Public Member Functions | Protected Member Functions

ICounterSvc Class Reference

Create / access multi purpose counters. More...

#include <GaudiKernel/ICounterSvc.h>

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

List of all members.

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
typedef Stat CountObject
 Ease the manipulation of counters in a way, that they behave like objects: Avoid: Counter* cnt = ...; ++(*cnt);.
typedef std::vector< CountObjectCounters
 the actual type of vectors of initialized counters

Public Member Functions

 DeclareInterfaceID (ICounterSvc, 4, 0)
 InterfaceID.
virtual Counterget (const std::string &group, const std::string &name) const =0
 Access an existing counter object.
virtual Counters get (const std::string &group) const =0
 get all counters form the given group:
virtual StatusCode create (const std::string &group, const std::string &name, longlong initial_value, Counter *&refpCounter)=0
 Create a new counter object.
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.
virtual StatusCode remove (const std::string &group, const std::string &name)=0
 Remove a counter object.
virtual StatusCode remove (const std::string &group)=0
 Remove all counters of a given group.
virtual StatusCode print (const std::string &group, const std::string &name, Printout &printer) const =0
 Print counter value.
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.
virtual StatusCode print (const Counter *pCounter, Printout &printer) const =0
 Print counter value.
virtual StatusCode print (const CountObject &pCounter, Printout &printer) const =0
 Print counter value.
virtual StatusCode print (Printout &printer) const =0
virtual StatusCode defaultPrintout (MsgStream &log, const Counter *pCounter) const =0
 Default Printout for counters.

Protected Member Functions

virtual ~ICounterSvc ()

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 ibelyaev@physics.syr.edu
Version:
3.0

Definition at line 78 of file ICounterSvc.h.


Member Typedef Documentation

the actual type of counter

See also:
StatEntity

Definition at line 84 of file ICounterSvc.h.

the actual type of vectors of initialized counters

Definition at line 102 of file ICounterSvc.h.

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 100 of file ICounterSvc.h.


Member Enumeration Documentation

anonymous enum
Enumerator:
COUNTER_NOT_PRESENT 
COUNTER_EXISTS 
COUNTER_REMOVED 

Definition at line 256 of file ICounterSvc.h.

       {  COUNTER_NOT_PRESENT = 2,  // Error
          COUNTER_EXISTS      = 4,  // Error ?
          COUNTER_REMOVED     = 3   // Type of success. Low bit set
  } ;

Constructor & Destructor Documentation

ICounterSvc::~ICounterSvc (  ) [protected, virtual]

protected virtual destructor

Definition at line 30 of file ICounterSvc.cpp.

{}

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.

Implemented in CounterSvc.

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.

Implemented in CounterSvc.

ICounterSvc::DeclareInterfaceID ( ICounterSvc  ,
,
 
)
virtual StatusCode ICounterSvc::defaultPrintout ( MsgStream log,
const Counter pCounter 
) const [pure virtual]

Default Printout for counters.

Implemented in CounterSvc.

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).

Implemented in CounterSvc.

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:
gorupthe gorup name
Returns:
vector of the properly initialized counters

Implemented in CounterSvc.

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.

Implemented in CounterSvc.

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.

Implemented in CounterSvc.

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.

Implemented in CounterSvc.

virtual StatusCode ICounterSvc::print ( Printout printer ) const [pure virtual]
Parameters:
printer[IN] Print actor
Returns:
StatusCode indicating failure or success.

Implemented in CounterSvc.

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.

Implemented in CounterSvc.

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.

Implemented in CounterSvc.

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.

Implemented in CounterSvc.


The documentation for this class was generated from the following files:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Defines

Generated at Tue May 10 2011 18:54:50 for Gaudi Framework, version v22r2 by Doxygen version 1.7.2 written by Dimitri van Heesch, © 1997-2004