00001
00002 #ifndef GAUDIKERNEL_IDATAPROVIDERSVC_H
00003 #define GAUDIKERNEL_IDATAPROVIDERSVC_H
00004
00005
00006 #include "GaudiKernel/Kernel.h"
00007 #include "GaudiKernel/IInterface.h"
00008
00009
00010 #include <string>
00011
00012
00013 class DataObject;
00014 class IOpaqueAddress;
00015 class IRegistry;
00016 class DataStoreItem;
00017
00018
00019 static const InterfaceID IID_IDataProviderSvc("IDataProviderSvc", 2 , 0);
00020
00050 class IDataProviderSvc : virtual public IInterface {
00051 public:
00053 static const InterfaceID& interfaceID() { return IID_IDataProviderSvc; }
00054
00055 enum { SEPARATOR = '/' };
00056
00064 virtual StatusCode registerObject(const std::string& fullPath,
00065 DataObject* pObject) = 0;
00066
00075 virtual StatusCode registerObject(const std::string& parentPath,
00076 const std::string& objectPath,
00077 DataObject* pObject) = 0;
00078
00087 virtual StatusCode registerObject(const std::string& parentPath,
00088 int item,
00089 DataObject* pObject) = 0;
00090
00099 virtual StatusCode registerObject(DataObject* parentObj,
00100 const std::string& objectPath,
00101 DataObject* pObject) = 0;
00102
00111 virtual StatusCode registerObject(DataObject* parentObj,
00112 int item,
00113 DataObject* pObject) = 0;
00114
00128 virtual StatusCode unregisterObject(const std::string& fullPath) = 0;
00129
00144 virtual StatusCode unregisterObject(const std::string& parentPath,
00145 const std::string& objPath) = 0;
00146
00161 virtual StatusCode unregisterObject(const std::string& parentPath,
00162 int item) = 0;
00163
00177 virtual StatusCode unregisterObject(DataObject* pObject) = 0;
00178
00193 virtual StatusCode unregisterObject(DataObject* pParent,
00194 const std::string& objPath) = 0;
00195
00210 virtual StatusCode unregisterObject(DataObject* pParent, int item) = 0;
00211
00222 virtual StatusCode retrieveObject(IRegistry* pDirectory,
00223 const std::string& path,
00224 DataObject*& pObject) = 0;
00225
00234 virtual StatusCode retrieveObject(const std::string& fullPath,
00235 DataObject*& pObject) = 0;
00236
00247 virtual StatusCode retrieveObject(const std::string& parentPath,
00248 const std::string& objectPath,
00249 DataObject*& pObject) = 0;
00250
00261 virtual StatusCode retrieveObject(const std::string& parentPath,
00262 int item, DataObject*& pObject) = 0;
00263
00274 virtual StatusCode retrieveObject(DataObject* parentObj,
00275 const std::string& objectPath,
00276 DataObject*& pObject) = 0;
00277
00288 virtual StatusCode retrieveObject(DataObject* parentObj,
00289 int item,
00290 DataObject*& pObject) = 0;
00291
00301 virtual StatusCode findObject(IRegistry* pDirectory,
00302 const std::string& path,
00303 DataObject*& pObject) = 0;
00304
00312 virtual StatusCode findObject(const std::string& fullPath,
00313 DataObject*& pObject) = 0;
00314
00324 virtual StatusCode findObject(const std::string& parentPath,
00325 const std::string& objectPath,
00326 DataObject*& pObject) = 0;
00327
00336 virtual StatusCode findObject(const std::string& parentPath,
00337 int item,
00338 DataObject*& pObject) = 0;
00339
00349 virtual StatusCode findObject(DataObject* pNode,
00350 const std::string& objectPath,
00351 DataObject*& pObject) = 0;
00352
00361 virtual StatusCode findObject(DataObject* parentObj,
00362 int item,
00363 DataObject*& pObject) = 0;
00364
00370 virtual StatusCode updateObject(IRegistry* pDirectory) = 0;
00371
00378 virtual StatusCode updateObject(const std::string& fullPath) = 0;
00379
00386 virtual StatusCode updateObject(DataObject* toUpdate) = 0;
00387
00396 virtual StatusCode updateObject(const std::string& parentPath,
00397 const std::string& updatePath) = 0;
00398
00407 virtual StatusCode updateObject(DataObject* pParent,
00408 const std::string& updatePath) = 0;
00409
00414 virtual StatusCode addPreLoadItem(const DataStoreItem& item) = 0;
00415
00421 virtual StatusCode addPreLoadItem(const std::string& itemPath) = 0;
00422
00427 virtual StatusCode removePreLoadItem(const DataStoreItem& item) = 0;
00428
00433 virtual StatusCode removePreLoadItem(const std::string& itemPath) = 0;
00434
00438 virtual StatusCode resetPreLoad() = 0;
00439
00443 virtual StatusCode preLoad() = 0;
00444
00453 virtual StatusCode linkObject(IRegistry* from,
00454 const std::string& objPath,
00455 DataObject* toObj) = 0;
00456
00465 virtual StatusCode linkObject(const std::string& fromPath,
00466 const std::string& objPath,
00467 DataObject* toObj) = 0;
00468
00477 virtual StatusCode linkObject(DataObject* fromObj,
00478 const std::string& objPath,
00479 DataObject* toObj) = 0;
00480
00488 virtual StatusCode linkObject(const std::string& fullPath,
00489 DataObject* toObj) = 0;
00490
00499 virtual StatusCode unlinkObject(IRegistry* from,
00500 const std::string& objPath) = 0;
00501
00510 virtual StatusCode unlinkObject(const std::string& fromPath,
00511 const std::string& objPath) = 0;
00512
00521 virtual StatusCode unlinkObject(DataObject* fromObj,
00522 const std::string& objPath) = 0;
00523
00531 virtual StatusCode unlinkObject(const std::string& fullPath) = 0;
00532
00534 enum Status {
00536 IID_IDataProviderSvc_NO_ERROR = 1,
00538 DOUBL_OBJ_PATH,
00540 INVALID_OBJ_PATH,
00542 INVALID_ROOT,
00544 INVALID_OBJECT,
00546 INVALID_PARENT,
00548 OBJ_NOT_LOADED,
00550 NO_DATA_LOADER,
00552 INVALID_OBJ_ADDR,
00554 DIR_NOT_EMPTY,
00556 NO_MORE_LEVELS,
00558 NO_ACCESS,
00560 LAST
00561 };
00562 };
00563
00564 #endif // GAUDIKERNEL_IDATAPROVIDERSVC_H