00001
00002 #ifndef GAUDIKERNEL_IDATAPROVIDERSVC_H
00003 #define GAUDIKERNEL_IDATAPROVIDERSVC_H
00004
00005
00006 #include <string>
00007
00008 #include "GaudiKernel/Kernel.h"
00009 #include "GaudiKernel/IInterface.h"
00010
00011
00012 class DataObject;
00013 class IOpaqueAddress;
00014 class IDataDirectory;
00015 class DataStoreItem;
00016
00017
00018 static const InterfaceID IID_IDataProviderSvc(6, 1 , 0);
00019
00020
00044 class IDataProviderSvc : virtual public IInterface {
00045 public:
00047 static const InterfaceID& interfaceID() { return IID_IDataProviderSvc; }
00048
00056 virtual StatusCode registerObject(const std::string& fullPath, DataObject* pObject) = 0;
00057
00066 virtual StatusCode registerObject(const std::string& parentPath, const std::string& objectPath, DataObject* pObject) = 0;
00067
00076 virtual StatusCode registerObject(const std::string& parentPath, int item, DataObject* pObject) = 0;
00077
00086 virtual StatusCode registerObject(DataObject* parentObj, const std::string& objectPath, DataObject* pObject) = 0;
00087
00096 virtual StatusCode registerObject(DataObject* parentObj, int item, DataObject* pObject) = 0;
00097
00104 virtual StatusCode unregisterObject(const std::string& fullPath) = 0;
00105
00114 virtual StatusCode unregisterObject(const std::string& parentPath, const std::string& objPath) = 0;
00115
00124 virtual StatusCode unregisterObject(const std::string& parentPath, int item) = 0;
00125
00133 virtual StatusCode unregisterObject(DataObject* pObject) = 0;
00134
00143 virtual StatusCode unregisterObject(DataObject* pParent, const std::string& objPath) = 0;
00144
00153 virtual StatusCode unregisterObject(DataObject* pParent, int item) = 0;
00154
00165 virtual StatusCode retrieveObject(IDataDirectory* pDirectory, const std::string& path, DataObject*& pObject) = 0;
00166
00175 virtual StatusCode retrieveObject(const std::string& fullPath, DataObject*& pObject) = 0;
00176
00187 virtual StatusCode retrieveObject(const std::string& parentPath, const std::string& objectPath, DataObject*& pObject) = 0;
00188
00199 virtual StatusCode retrieveObject(const std::string& parentPath, int item, DataObject*& pObject) = 0;
00200
00211 virtual StatusCode retrieveObject(DataObject* parentObj, const std::string& objectPath, DataObject*& pObject) = 0;
00212
00223 virtual StatusCode retrieveObject(DataObject* parentObj, int item, DataObject*& pObject) = 0;
00224
00234 virtual StatusCode findObject(IDataDirectory* pDirectory, const std::string& path, DataObject*& pObject) = 0;
00235
00243 virtual StatusCode findObject(const std::string& fullPath, DataObject*& pObject) = 0;
00244
00254 virtual StatusCode findObject(const std::string& parentPath, const std::string& objectPath, DataObject*& pObject) = 0;
00255
00264 virtual StatusCode findObject(const std::string& parentPath, int item, DataObject*& pObject) = 0;
00265
00275 virtual StatusCode findObject(DataObject* pNode, const std::string& objectPath, DataObject*& pObject) = 0;
00276
00285 virtual StatusCode findObject(DataObject* parentObj, int item, DataObject*& pObject) = 0;
00286
00292 virtual StatusCode updateObject(IDataDirectory* pDirectory) = 0;
00293
00300 virtual StatusCode updateObject(const std::string& fullPath) = 0;
00301
00308 virtual StatusCode updateObject(DataObject* toUpdate) = 0;
00309
00317 virtual StatusCode updateObject(const std::string& parentPath, const std::string& updatePath) = 0;
00318
00326 virtual StatusCode updateObject(DataObject* pParent, const std::string& updatePath) = 0;
00327
00335 virtual StatusCode updateRegistryEntry(IOpaqueAddress* pAddress, DataObject* pObj) = 0;
00336
00341 virtual StatusCode addPreLoadItem(const DataStoreItem& item) = 0;
00342
00347 virtual StatusCode addPreLoadItem(const std::string& itemPath) = 0;
00348
00353 virtual StatusCode removePreLoadItem(const DataStoreItem& item) = 0;
00354
00359 virtual StatusCode removePreLoadItem(const std::string& itemPath) = 0;
00360
00364 virtual StatusCode resetPreLoad() = 0;
00365
00369 virtual StatusCode preLoad() = 0;
00370
00379 virtual StatusCode linkObject(IDataDirectory* from, const std::string& objPath, DataObject* toObj) = 0;
00380
00389 virtual StatusCode linkObject(const std::string& fromPath, const std::string& objPath, DataObject* toObj) = 0;
00390
00399 virtual StatusCode linkObject(DataObject* fromObj, const std::string& objPath, DataObject* toObj) = 0;
00400
00408 virtual StatusCode linkObject(const std::string& fullPath, DataObject* toObj) = 0;
00409
00417 virtual StatusCode unlinkObject(IDataDirectory* from, const std::string& objPath) = 0;
00418
00426 virtual StatusCode unlinkObject(const std::string& fromPath, const std::string& objPath) = 0;
00427
00435 virtual StatusCode unlinkObject(DataObject* fromObj, const std::string& objPath) = 0;
00436
00443 virtual StatusCode unlinkObject(const std::string& fullPath) = 0;
00444
00446 enum Status {
00448 IID_IDataProviderSvc_NO_ERROR = 1,
00450 DOUBL_OBJ_PATH,
00452 INVALID_OBJ_PATH,
00454 INVALID_ROOT,
00456 INVALID_OBJECT,
00458 INVALID_PARENT,
00460 OBJ_NOT_LOADED,
00462 NO_DATA_LOADER,
00464 INVALID_OBJ_ADDR,
00466 DIR_NOT_EMPTY,
00468 NO_MORE_LEVELS,
00470 LAST
00471 };
00472 };
00473
00474 #endif // GAUDIKERNEL_IDATAPROVIDERSVC_H