| # Gaudi Framework, version v20r3
Generated: 24 Nov 2008

# DataSvc.h

Go to the documentation of this file.

    00001 // $Id: DataSvc.h,v 1.14 2006/11/30 14:43:13 mato Exp $
    00002 #ifndef GAUDIKERNEL_DATASVC_H
    00003 #define GAUDIKERNEL_DATASVC_H
    00004
    00005 // Include files
    00006 #include "GaudiKernel/Service.h"
    00007 #include "GaudiKernel/DataStoreItem.h"
    00008 #include "GaudiKernel/IDataManagerSvc.h"
    00009 #include "GaudiKernel/IDataProviderSvc.h"
    00010
    00011 // Forward declarations
    00012 // Incident service
    00013 class IIncidentSvc;
    00014 // Generic address
    00015 class IOpaqueAddress;
    00016 // Generic interface to data object class
    00017 class DataObject;
    00018 // Data store agent
    00019 class IDataStoreAgent;
    00020 // Service factory
    00021 template <class TYPE> class SvcFactory;
    00022
    00023 // Do not clutter global namespace for helpers...
    00024 namespace DataSvcHelpers    {
    00025   // Map of objects where loading is inhibited
    00026   class InhibitMap;
    00027   // Generic registry entry
    00028   class RegistryEntry;
    00029 }
    00030
    00031
    00042 class DataSvc  : public Service,
    00043                              virtual public IDataProviderSvc,
    00044                  virtual public IDataManagerSvc
    00045 {
    00047   friend class SvcFactory<DataSvc>;
    00048
    00049 public:
    00051   typedef std::vector<DataStoreItem> LoadItems;
    00052
    00053 protected:
    00055   CLID                            m_rootCLID;
    00057   std::string                     m_rootName;
    00059   IConversionSvc*                 m_dataLoader;
    00061   IIncidentSvc*                   m_incidentSvc;
    00063   LoadItems                       m_preLoads;
    00065   bool                            m_forceLeaves;
    00067   bool                            m_enableAccessHdlr;
    00069   bool                            m_enableFaultHdlr;
    00071   DataSvcHelpers::RegistryEntry*  m_root;
    00073   DataSvcHelpers::InhibitMap*     m_inhibitMap;
    00075   std::vector<std::string>        m_inhibitPathes;
    00077   std::string                     m_accessName;
    00079   std::string                     m_faultName;
    00080 public:
    00081
    00083   virtual CLID rootCLID() const;
    00084
    00086   virtual std::string rootName() const;
    00087
    00089   virtual StatusCode registerAddress( const std::string& fullPath,
    00090                                       IOpaqueAddress* pAddress);
    00091
    00093   virtual StatusCode registerAddress( DataObject* parentObj,
    00094                                       const std::string& objectPath,
    00095                                       IOpaqueAddress* pAddress);
    00096
    00098   virtual StatusCode registerAddress( IRegistry* parentObj,
    00099                                       const std::string& objectPath,
    00100                                       IOpaqueAddress* pAddress);
    00101
    00103   virtual StatusCode unregisterAddress(const std::string& fullPath);
    00104
    00106   virtual StatusCode unregisterAddress( DataObject* pParent,
    00107                                         const std::string& objPath);
    00108
    00110   virtual StatusCode unregisterAddress( IRegistry* pParent,
    00111                                         const std::string& objPath);
    00112
    00116   virtual StatusCode objectLeaves( const DataObject*  pObject,
    00117                                   std::vector<IRegistry*>& refLeaves);
    00121   virtual StatusCode objectLeaves( const IRegistry*   pRegistry,
    00122                                   std::vector<IRegistry*>& refLeaves);
    00123
    00125   virtual StatusCode objectParent( const DataObject*  pObject,
    00126                                    IRegistry*& refpParent);
    00128   virtual StatusCode objectParent( const IRegistry*   pRegistry,
    00129                                    IRegistry*& refpParent);
    00130
    00134   virtual StatusCode clearSubTree( const std::string& sub_tree_path );
    00135
    00139   virtual StatusCode clearSubTree( DataObject* pObject );
    00140
    00142   virtual StatusCode clearStore();
    00143
    00147   virtual StatusCode traverseSubTree( const std::string& sub_tree_path,
    00148                                       IDataStoreAgent* pAgent );
    00149
    00151   virtual StatusCode traverseSubTree( DataObject* pObject,
    00152                                       IDataStoreAgent* pAgent );
    00153
    00155   virtual StatusCode traverseTree( IDataStoreAgent* pAgent );
    00156
    00159   virtual StatusCode setRoot( const std::string& root_name,
    00160                               DataObject* pRootObj);
    00161
    00165   virtual StatusCode i_setRoot( const std::string& root_name,
    00166                                 DataObject* pRootObj);
    00167
    00170   virtual StatusCode setRoot (const std::string& root_path,
    00171                               IOpaqueAddress* pRootAddr);
    00172
    00177   virtual StatusCode i_setRoot (const std::string& root_path,
    00178                                 IOpaqueAddress* pRootAddr);
    00179
    00183   virtual StatusCode setDataLoader( IConversionSvc* svc );
    00184
    00186   virtual StatusCode addPreLoadItem( const DataStoreItem& item );
    00187
    00189   virtual StatusCode addPreLoadItem( const std::string& itemPath );
    00190
    00192   virtual StatusCode removePreLoadItem( const DataStoreItem& item );
    00193
    00195   virtual StatusCode removePreLoadItem( const std::string& itemPath );
    00196
    00198   virtual StatusCode resetPreLoad();
    00199
    00207   virtual StatusCode preLoad( int depth,
    00208                               int load_depth,
    00209                               DataObject* pObject );
    00210
    00212   virtual StatusCode preLoad();
    00213
    00215   virtual StatusCode registerObject(  const std::string& fullPath,
    00216                                       DataObject* pObject );
    00217
    00219   virtual StatusCode registerObject(  const std::string& parentPath,
    00220                                       const std::string& objPath,
    00221                                       DataObject* pObject );
    00222
    00224   virtual StatusCode registerObject(  const std::string& parentPath,
    00225                                       int item,
    00226                                       DataObject* pObject );
    00227
    00229   virtual StatusCode registerObject(  DataObject* parentObj,
    00230                                       const std::string& objPath,
    00231                                       DataObject* pObject );
    00232
    00234   virtual StatusCode registerObject(  DataObject* parentObj,
    00235                                       int item,
    00236                                       DataObject* pObject );
    00237
    00239   virtual StatusCode unregisterObject(const std::string& fullPath );
    00240
    00242   virtual StatusCode unregisterObject(const std::string& parentPath,
    00243                                       const std::string& objectPath );
    00244
    00246   virtual StatusCode unregisterObject(const std::string& parentPath,
    00247                                       int item );
    00248
    00250   virtual StatusCode unregisterObject(DataObject* pObject );
    00251
    00253   virtual StatusCode unregisterObject(DataObject* pObject,
    00254                                       const std::string& objectPath );
    00255
    00257   virtual StatusCode unregisterObject(DataObject* pObject,
    00258                                       int item );
    00259
    00261   virtual StatusCode retrieveObject(  IRegistry* pDirectory,
    00262                                       const std::string& path,
    00263                                       DataObject*& pObject );
    00264
    00266   virtual StatusCode retrieveObject(  const std::string& fullPath,
    00267                                       DataObject*& pObject );
    00268
    00270   virtual StatusCode retrieveObject(  const std::string& parentPath,
    00271                                       const std::string& objPath,
    00272                                       DataObject*& pObject );
    00273
    00275   virtual StatusCode retrieveObject(  const std::string& parentPath,
    00276                                       int item,
    00277                                       DataObject*& pObject );
    00278
    00280   virtual StatusCode retrieveObject(  DataObject* parentObj,
    00281                                       const std::string& objPath,
    00282                                       DataObject*& pObject );
    00283
    00285   virtual StatusCode retrieveObject(  DataObject* parentObj,
    00286                                       int item,
    00287                                       DataObject*& pObject );
    00288
    00290   virtual StatusCode findObject(  const std::string& fullPath,
    00291                                   DataObject*& pObject );
    00292
    00294   virtual StatusCode findObject(  IRegistry* pDirectory,
    00295                                   const std::string& path,
    00296                                   DataObject*& pObject );
    00297
    00299   virtual StatusCode findObject(  const std::string& parentPath,
    00300                                   const std::string& objPath,
    00301                                   DataObject*& pObject );
    00302
    00304   virtual StatusCode findObject(  const std::string& parentPath,
    00305                                   int item,
    00306                                   DataObject*& pObject );
    00307
    00309   virtual StatusCode findObject(  DataObject* parentObj,
    00310                                   const std::string& objPath,
    00311                                   DataObject*& pObject );
    00312
    00314   virtual StatusCode findObject(  DataObject* parentObj,
    00315                                   int item,
    00316                                   DataObject*& pObject );
    00317
    00319   virtual StatusCode linkObject(  IRegistry* from,
    00320                                   const std::string& objPath,
    00321                                   DataObject* to );
    00322
    00324   virtual StatusCode linkObject(  const std::string& fromPath,
    00325                                   const std::string& objPath,
    00326                                   DataObject* to );
    00327
    00329   virtual StatusCode linkObject(  DataObject* from,
    00330                                   const std::string& objPath,
    00331                                   DataObject* to );
    00332
    00334   virtual StatusCode linkObject(  const std::string& fullPath,
    00335                                   DataObject* to );
    00336
    00338   virtual StatusCode unlinkObject(IRegistry* from,
    00339                                   const std::string& objPath );
    00340
    00342   virtual StatusCode unlinkObject(const std::string& fromPath,
    00343                                   const std::string& objPath );
    00344
    00346   virtual StatusCode unlinkObject(DataObject* fromObj,
    00347                                   const std::string& objPath );
    00348
    00350   virtual StatusCode unlinkObject(const std::string& fullPath );
    00351
    00353   virtual StatusCode updateObject(IRegistry* pDirectory );
    00354
    00356   virtual StatusCode updateObject(const std::string& updatePath );
    00357
    00359   virtual StatusCode updateObject(DataObject* toUpdate );
    00360
    00362   virtual StatusCode updateObject(const std::string& parentPath,
    00363                                   const std::string& updatePath );
    00364
    00366   virtual StatusCode updateObject(DataObject* pParent,
    00367                                   const std::string& updatePath );
    00368
    00370   virtual StatusCode queryInterface( const InterfaceID& riid, void** ppvUnknown );
    00371
    00373   virtual StatusCode initialize();
    00374
    00376   virtual StatusCode reinitialize();
    00377
    00379   virtual StatusCode finalize();
    00380
    00382   DataSvc( const std::string& name, ISvcLocator* svc );
    00383
    00385   virtual ~DataSvc();
    00386
    00387 protected:
    00389   bool checkRoot()    {
    00390     return 0 != m_root;
    00391   }
    00392
    00396   virtual IConversionSvc* getDataLoader(IRegistry* pReg);
    00397
    00399   virtual DataObject* createDefaultObject()   const;
    00400
    00404   virtual StatusCode loadObject( IRegistry* pNode );
    00405
    00409   virtual StatusCode loadObject( IConversionSvc* pLoader,
    00410                                  IRegistry* pNode );
    00411
    00413   StatusCode retrieveEntry( DataSvcHelpers::RegistryEntry* pNode,
    00414                             const std::string& path,
    00415                             DataSvcHelpers::RegistryEntry*& pEntry );
    00422   DataObject* handleDataFault(IRegistry* pReg, const std::string& path="");
    00423 };
    00424 #endif // GAUDIKERNEL_DATASVC_H
    00425