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

In This Package:

IUpdateManagerSvc Class Reference

Interface class to the Update Manager service. More...

#include <GaudiKernel/IUpdateManagerSvc.h>

Inheritance diagram for IUpdateManagerSvc:

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

Public Types

 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 IDataProviderSvcdataProvider () const =0
 Give access to the data provider.
virtual IDetDataSvcdetDataSvc () const =0
 Give access to the detector data service interface (usualy of the data provider itself).
template<class CallerClass>
void registerCondition (CallerClass *instance, const std::string &condition="", typename ObjectMemberFunction< CallerClass >::MemberFunctionType mf=NULL)
 Register an object (algorithm instance) to the service.
template<class CallerClass, class CondType>
void registerCondition (CallerClass *instance, const std::string &condition, typename ObjectMemberFunction< CallerClass >::MemberFunctionType mf, CondType *&condPtrDest)
template<class CallerClass>
void registerCondition (CallerClass *instance, const char *condition, typename ObjectMemberFunction< CallerClass >::MemberFunctionType mf=NULL)
 See above. Needed to avoid conflicts with the next one.
template<class CallerClass, class ObjectClass>
void registerCondition (CallerClass *instance, ObjectClass *obj, typename ObjectMemberFunction< CallerClass >::MemberFunctionType mf=NULL)
 Like the first version of registerCondition, but instead declaring the dependency on a condition of the service privider, it uses an already registered object.
template<class CallerClass>
void unregister (CallerClass *instance)
 Generic objects can be unregistered from the UpdateManagerSvc.
template<class CallerClass>
void invalidate (CallerClass *instance)
 Invalidate the given object in the dependency network.
virtual bool getValidity (const std::string path, Gaudi::Time &since, Gaudi::Time &until, bool path_to_db=false)=0
 Retrieve the interval of validity (in the UpdateManagerSvc) of the given item.
virtual void setValidity (const std::string path, const Gaudi::Time &since, const Gaudi::Time &until, bool path_to_db=false)=0
 Change the interval of validity of the given item to the specified values, updating parents if needed.
virtual StatusCode newEvent ()=0
 Start an update loop using the event time given by the detector data service.
virtual StatusCode newEvent (const Gaudi::Time &)=0
 Start an update loop using the give event time.
template<class CallerClass>
StatusCode update (CallerClass *instance)
 Update the given instance.
virtual void dump ()=0
 Debug method: it dumps the dependency network through the message service (not very readable, for experts only).
virtual void acquireLock ()=0
 Force the update manager service to wait before entering the newEvent loop.
virtual void releaseLock ()=0
 Let the update manager service enter the newEvent loop.
virtual void purge ()=0
 Remove all the items referring to objects present in the transient store.
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 ()
 Return the interface ID.

Protected Member Functions

virtual void i_registerCondition (const std::string &condition, BaseObjectMemberFunction *mf, BasePtrSetter *ptr_dest=NULL)=0
virtual void i_registerCondition (void *obj, BaseObjectMemberFunction *mf)=0
virtual StatusCode i_update (void *instance)=0
virtual void i_unregister (void *instance)=0
virtual void i_invalidate (void *instance)=0

Friends

class PythonHelper

Classes

class  PythonHelper
 Helper class implemented in the python dictionary to allow access from python to template member functions. More...

Detailed Description

Interface class to the Update Manager service.

Users should only use this interface.

Author:
Marco CLEMENCIC
Date:
2005-03-30

Definition at line 177 of file IUpdateManagerSvc.h.


Member Enumeration Documentation

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   };


Member Function Documentation

static const InterfaceID& IUpdateManagerSvc::interfaceID (  )  [inline, static]

Return the interface ID.

Reimplemented from IInterface.

Definition at line 181 of file IUpdateManagerSvc.h.

00181 { return IID_IUpdateManagerSvc; }

virtual IDataProviderSvc* IUpdateManagerSvc::dataProvider (  )  const [pure virtual]

Give access to the data provider.

virtual IDetDataSvc* IUpdateManagerSvc::detDataSvc (  )  const [pure virtual]

Give access to the detector data service interface (usualy of the data provider itself).

template<class CallerClass>
void IUpdateManagerSvc::registerCondition ( CallerClass *  instance,
const std::string &  condition = "",
typename ObjectMemberFunction< CallerClass >::MemberFunctionType  mf = NULL 
) [inline]

Register an object (algorithm instance) to the service.

The object should provide a method to be called in case of an update of the needed condition. An object can register multiple conditions using the same method: it will be called if at least one of the specified conditions is updated, but only when all of them are up to date.

Returns:
StatusCode::SUCCESS if the registration went right.

Definition at line 196 of file IUpdateManagerSvc.h.

00197                                                                                                        {
00198     i_registerCondition(condition, new ObjectMemberFunction<CallerClass>(instance,mf));
00199   }

template<class CallerClass, class CondType>
void IUpdateManagerSvc::registerCondition ( CallerClass *  instance,
const std::string &  condition,
typename ObjectMemberFunction< CallerClass >::MemberFunctionType  mf,
CondType *&  condPtrDest 
) [inline]

Definition at line 202 of file IUpdateManagerSvc.h.

00204                                                        {
00205     i_registerCondition(condition, new ObjectMemberFunction<CallerClass>(instance,mf),
00206                         new PtrSetter<CondType>(condPtrDest));
00207   }

template<class CallerClass>
void IUpdateManagerSvc::registerCondition ( CallerClass *  instance,
const char *  condition,
typename ObjectMemberFunction< CallerClass >::MemberFunctionType  mf = NULL 
) [inline]

See above. Needed to avoid conflicts with the next one.

Definition at line 211 of file IUpdateManagerSvc.h.

00212                                                                                                        {
00213     i_registerCondition(std::string(condition), new ObjectMemberFunction<CallerClass>(instance,mf));
00214   }

template<class CallerClass, class ObjectClass>
void IUpdateManagerSvc::registerCondition ( CallerClass *  instance,
ObjectClass *  obj,
typename ObjectMemberFunction< CallerClass >::MemberFunctionType  mf = NULL 
) [inline]

Like the first version of registerCondition, but instead declaring the dependency on a condition of the service privider, it uses an already registered object.

It means that a generic object can depend on another generic object that depends on a ValidDataObject. The dependency network is kept consistent by the UpdateManagerSvc.

Definition at line 220 of file IUpdateManagerSvc.h.

00221                                                                                                        {
00222         i_registerCondition(dynamic_cast<void*>(obj), new ObjectMemberFunction<CallerClass>(instance,mf));
00223   }

template<class CallerClass>
void IUpdateManagerSvc::unregister ( CallerClass *  instance  )  [inline]

Generic objects can be unregistered from the UpdateManagerSvc.

The dependency network is always consistent, but internal IOVs are not modified.

Warning:
{Removing a node which other nodes depends on can create problems if the methods of this other nodes are called.}

Definition at line 229 of file IUpdateManagerSvc.h.

00229                                                 {
00230     i_unregister(dynamic_cast<void*>(instance));
00231   }

template<class CallerClass>
void IUpdateManagerSvc::invalidate ( CallerClass *  instance  )  [inline]

Invalidate the given object in the dependency network.

It means that all the objects depending on that one will be updated before the next event.

Definition at line 236 of file IUpdateManagerSvc.h.

00236 {i_invalidate(dynamic_cast<void*>(instance));}

virtual bool IUpdateManagerSvc::getValidity ( const std::string  path,
Gaudi::Time &  since,
Gaudi::Time &  until,
bool  path_to_db = false 
) [pure virtual]

Retrieve the interval of validity (in the UpdateManagerSvc) of the given item.

Returns:
false if the item was not found.

virtual void IUpdateManagerSvc::setValidity ( const std::string  path,
const Gaudi::Time &  since,
const Gaudi::Time &  until,
bool  path_to_db = false 
) [pure virtual]

Change the interval of validity of the given item to the specified values, updating parents if needed.

The change can only restrict the current IOV, If you want to expand the validity you should act on the transient data store and the change will be reflected at the next update.

virtual StatusCode IUpdateManagerSvc::newEvent (  )  [pure virtual]

Start an update loop using the event time given by the detector data service.

virtual StatusCode IUpdateManagerSvc::newEvent ( const Gaudi::Time &   )  [pure virtual]

Start an update loop using the give event time.

NOTE: the given event time is only used to check if updates are needed, the real update is done using the detector data service event time. (may change in future)

template<class CallerClass>
StatusCode IUpdateManagerSvc::update ( CallerClass *  instance  )  [inline]

Update the given instance.

This method should be called by the object after registration to ensure that the needed operations is done immediately and not before the next event.

Definition at line 259 of file IUpdateManagerSvc.h.

00259                                                  {
00260     return i_update(dynamic_cast<void*>(instance));
00261   }

virtual void IUpdateManagerSvc::dump (  )  [pure virtual]

Debug method: it dumps the dependency network through the message service (not very readable, for experts only).

virtual void IUpdateManagerSvc::acquireLock (  )  [pure virtual]

Force the update manager service to wait before entering the newEvent loop.

virtual void IUpdateManagerSvc::releaseLock (  )  [pure virtual]

Let the update manager service enter the newEvent loop.

virtual void IUpdateManagerSvc::purge (  )  [pure virtual]

Remove all the items referring to objects present in the transient store.

This is needed when the Detector Transient Store is purged, otherwise we will keep pointers to not existing objects.

virtual void IUpdateManagerSvc::i_registerCondition ( const std::string &  condition,
BaseObjectMemberFunction mf,
BasePtrSetter ptr_dest = NULL 
) [protected, pure virtual]

virtual void IUpdateManagerSvc::i_registerCondition ( void *  obj,
BaseObjectMemberFunction mf 
) [protected, pure virtual]

virtual StatusCode IUpdateManagerSvc::i_update ( void *  instance  )  [protected, pure virtual]

virtual void IUpdateManagerSvc::i_unregister ( void *  instance  )  [protected, pure virtual]

virtual void IUpdateManagerSvc::i_invalidate ( void *  instance  )  [protected, pure virtual]

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.


Friends And Related Function Documentation

friend class PythonHelper [friend]

Definition at line 292 of file IUpdateManagerSvc.h.


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:11 2011 for GaudiKernel by doxygen 1.4.7