| Classes | Job Modules | Data Objects | Services | Algorithms | Tools | Packages | Directories | Tracs |

In This Package:

ICounterSvc Class Reference

Create / access multi purpose counters. More...

#include <GaudiKernel/ICounterSvc.h>

Inheritance diagram for ICounterSvc:

[legend]
Collaboration diagram for ICounterSvc:
[legend]
List of all members.

Public Types

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 = .
typedef std::vector< CountObjectCounters
 the actual type of vectors of initialized counters
 COUNTER_NOT_PRESENT = 2
 COUNTER_EXISTS = 4
 COUNTER_REMOVED = 3
enum  { COUNTER_NOT_PRESENT = 2, COUNTER_EXISTS = 4, COUNTER_REMOVED = 3 }
 SUCCESS = 1
 Normal successful completion.
 NO_INTERFACE
 Requested interface is not available.
 VERSMISMATCH
 Requested interface version is incompatible.
 LAST_ERROR
 Last error.
enum  Status { SUCCESS = 1, NO_INTERFACE, VERSMISMATCH, LAST_ERROR }
 Return status. More...

Public Member Functions

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.
virtual StatusCode queryInterface (const InterfaceID &riid, void **ppvInterface)=0
 Query interfaces of Interface.
virtual unsigned long addRef ()=0
 Increment the reference count of Interface instance.
virtual unsigned long release ()=0
 Release Interface instance.

Static Public Member Functions

static const InterfaceIDinterfaceID ()
 Retrieve the unique interface ID.

Protected Member Functions

virtual ~ICounterSvc ()
 protected virtual destructor protected virtual destructor

Classes

class  Printout
 Print counters for each element in the range [first, last) e.g. 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 ibelyaev@physics.syr.edu

Version:
3.0

Definition at line 78 of file ICounterSvc.h.


Member Typedef Documentation

typedef StatEntity ICounterSvc::Counter

the actual type of counter

See also:
StatEntity

Definition at line 82 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 98 of file ICounterSvc.h.

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

the actual type of vectors of initialized counters

Definition at line 100 of file ICounterSvc.h.


Member Enumeration Documentation

anonymous enum

Enumerator:
COUNTER_NOT_PRESENT 
COUNTER_EXISTS 
COUNTER_REMOVED 

Definition at line 254 of file ICounterSvc.h.

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

enum IInterface::Status [inherited]

Return status.

Enumerator:
SUCCESS  Normal successful completion.
NO_INTERFACE  Requested interface is not available.
VERSMISMATCH  Requested interface version is incompatible.
LAST_ERROR  Last error.

Reimplemented in IConversionSvc, IConverter, and IDataProviderSvc.

Definition at line 113 of file IInterface.h.

00113                 {
00115     SUCCESS = 1,
00117     NO_INTERFACE,
00119     VERSMISMATCH,
00121     LAST_ERROR
00122   };


Constructor & Destructor Documentation

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

protected virtual destructor protected virtual destructor


Member Function Documentation

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) << endreq ;
       }
See also:
ICounterSvc::Counters
Parameters:
gorup the gorup name
Returns:
vector of the properly initialized counters

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.

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.

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::defaultPrintout ( MsgStream log,
const Counter pCounter 
) const [pure virtual]

Default Printout for counters.

static const InterfaceID& ICounterSvc::interfaceID (  )  [static]

Retrieve the unique interface ID.

See also:
IInterface

Reimplemented from IInterface.

virtual StatusCode IInterface::queryInterface ( const InterfaceID riid,
void **  ppvInterface 
) [pure virtual, inherited]

Query interfaces of Interface.

Parameters:
riid ID of Interface to be retrieved
ppvInterface Pointer to Location for interface pointer

Implemented in Algorithm, AlgTool, Auditor, ConversionSvc, Converter, DataSvc, EventSelectorDataStream, MinimalEventLoopMgr, PropertyMgr, SelectStatement, and Service.

virtual unsigned long IInterface::addRef (  )  [pure virtual, inherited]

Increment the reference count of Interface instance.

Implemented in Algorithm, AlgTool, Auditor, Converter, EventSelectorDataStream, IFactory, PropertyMgr, SelectStatement, and Service.

virtual unsigned long IInterface::release (  )  [pure virtual, inherited]

Release Interface instance.

Implemented in Algorithm, AlgTool, Auditor, Converter, EventSelectorDataStream, IFactory, PropertyMgr, SelectStatement, and Service.


The documentation for this class was generated from the following file:
| Classes | Job Modules | Data Objects | Services | Algorithms | Tools | Packages | Directories | Tracs |

Generated on Mon Apr 11 19:57:08 2011 for GaudiKernel by doxygen 1.4.7