All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
DataSvc.h
Go to the documentation of this file.
1 #ifndef GAUDIKERNEL_DATASVC_H
2 #define GAUDIKERNEL_DATASVC_H
3 
4 // Include files
5 #include "GaudiKernel/Service.h"
9 
10 #include <boost/utility/string_ref.hpp>
11 
12 // Forward declarations
13 // Incident service
14 class IIncidentSvc;
15 // Generic address
16 class IOpaqueAddress;
17 // Generic interface to data object class
18 class DataObject;
19 // Data store agent
20 class IDataStoreAgent;
21 
22 // Do not clutter global namespace for helpers...
23 namespace DataSvcHelpers {
24  // Map of objects where loading is inhibited
25  class InhibitMap;
26  // Generic registry entry
27  class RegistryEntry;
28 }
29 
40 class GAUDI_API DataSvc: public extends2<Service, IDataProviderSvc, IDataManagerSvc>
41 {
42 public:
44  typedef std::vector<DataStoreItem> LoadItems;
45 
46 protected:
50  std::string m_rootName;
66  DataSvcHelpers::InhibitMap* m_inhibitMap;
68  std::vector<std::string> m_inhibitPathes;
70  std::string m_accessName;
72  std::string m_faultName;
73 public:
74 
76  virtual CLID rootCLID() const;
77 
79  virtual std::string rootName() const;
80 
82  virtual StatusCode registerAddress( const std::string& fullPath,
83  IOpaqueAddress* pAddress);
84 
86  virtual StatusCode registerAddress( DataObject* parentObj,
87  const std::string& objectPath,
88  IOpaqueAddress* pAddress);
89 
91  virtual StatusCode registerAddress( IRegistry* parentObj,
92  const std::string& objectPath,
93  IOpaqueAddress* pAddress);
94 
96  virtual StatusCode unregisterAddress(const std::string& fullPath);
97 
99  virtual StatusCode unregisterAddress( DataObject* pParent,
100  const std::string& objPath);
101 
103  virtual StatusCode unregisterAddress( IRegistry* pParent,
104  const std::string& objPath);
105 
109  virtual StatusCode objectLeaves( const DataObject* pObject,
110  std::vector<IRegistry*>& refLeaves);
114  virtual StatusCode objectLeaves( const IRegistry* pRegistry,
115  std::vector<IRegistry*>& refLeaves);
116 
118  virtual StatusCode objectParent( const DataObject* pObject,
119  IRegistry*& refpParent);
121  virtual StatusCode objectParent( const IRegistry* pRegistry,
122  IRegistry*& refpParent);
123 
127  virtual StatusCode clearSubTree( const std::string& sub_tree_path );
128 
132  virtual StatusCode clearSubTree( DataObject* pObject );
133 
135  virtual StatusCode clearStore();
136 
140  virtual StatusCode traverseSubTree( const std::string& sub_tree_path,
141  IDataStoreAgent* pAgent );
142 
144  virtual StatusCode traverseSubTree( DataObject* pObject,
145  IDataStoreAgent* pAgent );
146 
148  virtual StatusCode traverseTree( IDataStoreAgent* pAgent );
149 
152  virtual StatusCode setRoot( const std::string& root_name,
153  DataObject* pRootObj);
154 
158  virtual StatusCode i_setRoot( const std::string& root_name,
159  DataObject* pRootObj);
160 
163  virtual StatusCode setRoot (const std::string& root_path,
164  IOpaqueAddress* pRootAddr);
165 
170  virtual StatusCode i_setRoot (const std::string& root_path,
171  IOpaqueAddress* pRootAddr);
172 
176  virtual StatusCode setDataLoader( IConversionSvc* svc );
177 
179  virtual StatusCode addPreLoadItem( const DataStoreItem& item );
180 
182  virtual StatusCode addPreLoadItem( const std::string& itemPath );
183 
185  virtual StatusCode removePreLoadItem( const DataStoreItem& item );
186 
188  virtual StatusCode removePreLoadItem( const std::string& itemPath );
189 
191  virtual StatusCode resetPreLoad();
192 
200  virtual StatusCode preLoad( int depth,
201  int load_depth,
202  DataObject* pObject );
203 
205  virtual StatusCode preLoad();
206 
208  virtual StatusCode registerObject( const std::string& fullPath,
209  DataObject* pObject );
210 
212  virtual StatusCode registerObject( const std::string& parentPath,
213  const std::string& objPath,
214  DataObject* pObject );
215 
217  virtual StatusCode registerObject( const std::string& parentPath,
218  int item,
219  DataObject* pObject );
220 
222  virtual StatusCode registerObject( DataObject* parentObj,
223  const std::string& objPath,
224  DataObject* pObject );
225 
227  virtual StatusCode registerObject( DataObject* parentObj,
228  int item,
229  DataObject* pObject );
230 
232  virtual StatusCode unregisterObject(const std::string& fullPath );
233 
235  virtual StatusCode unregisterObject(const std::string& parentPath,
236  const std::string& objectPath );
237 
239  virtual StatusCode unregisterObject(const std::string& parentPath,
240  int item );
241 
243  virtual StatusCode unregisterObject(DataObject* pObject );
244 
246  virtual StatusCode unregisterObject(DataObject* pObject,
247  const std::string& objectPath );
248 
250  virtual StatusCode unregisterObject(DataObject* pObject,
251  int item );
252 
254  virtual StatusCode retrieveObject( IRegistry* pDirectory,
255  const std::string& path,
256  DataObject*& pObject );
257 
259  virtual StatusCode retrieveObject( const std::string& fullPath,
260  DataObject*& pObject );
261 
263  virtual StatusCode retrieveObject( const std::string& parentPath,
264  const std::string& objPath,
265  DataObject*& pObject );
266 
268  virtual StatusCode retrieveObject( const std::string& parentPath,
269  int item,
270  DataObject*& pObject );
271 
273  virtual StatusCode retrieveObject( DataObject* parentObj,
274  const std::string& objPath,
275  DataObject*& pObject );
276 
278  virtual StatusCode retrieveObject( DataObject* parentObj,
279  int item,
280  DataObject*& pObject );
281 
283  virtual StatusCode findObject( const std::string& fullPath,
284  DataObject*& pObject );
285 
287  virtual StatusCode findObject( IRegistry* pDirectory,
288  const std::string& path,
289  DataObject*& pObject );
290 
292  virtual StatusCode findObject( const std::string& parentPath,
293  const std::string& objPath,
294  DataObject*& pObject );
295 
297  virtual StatusCode findObject( const std::string& parentPath,
298  int item,
299  DataObject*& pObject );
300 
302  virtual StatusCode findObject( DataObject* parentObj,
303  const std::string& objPath,
304  DataObject*& pObject );
305 
307  virtual StatusCode findObject( DataObject* parentObj,
308  int item,
309  DataObject*& pObject );
310 
312  virtual StatusCode linkObject( IRegistry* from,
313  const std::string& objPath,
314  DataObject* to );
315 
317  virtual StatusCode linkObject( const std::string& fromPath,
318  const std::string& objPath,
319  DataObject* to );
320 
322  virtual StatusCode linkObject( DataObject* from,
323  const std::string& objPath,
324  DataObject* to );
325 
327  virtual StatusCode linkObject( const std::string& fullPath,
328  DataObject* to );
329 
331  virtual StatusCode unlinkObject(IRegistry* from,
332  const std::string& objPath );
333 
335  virtual StatusCode unlinkObject(const std::string& fromPath,
336  const std::string& objPath );
337 
339  virtual StatusCode unlinkObject(DataObject* fromObj,
340  const std::string& objPath );
341 
343  virtual StatusCode unlinkObject(const std::string& fullPath );
344 
346  virtual StatusCode updateObject(IRegistry* pDirectory );
347 
349  virtual StatusCode updateObject(const std::string& updatePath );
350 
352  virtual StatusCode updateObject(DataObject* toUpdate );
353 
355  virtual StatusCode updateObject(const std::string& parentPath,
356  const std::string& updatePath );
357 
359  virtual StatusCode updateObject(DataObject* pParent,
360  const std::string& updatePath );
361 
363  virtual StatusCode initialize();
364 
366  virtual StatusCode reinitialize();
367 
369  virtual StatusCode finalize();
370 
372  DataSvc( const std::string& name, ISvcLocator* svc );
373 
375  virtual ~DataSvc();
376 
377 private:
379  DataSvc(const DataSvc&);
381  DataSvc& operator= (const DataSvc&);
382 
383 protected:
385  bool checkRoot() {
386  return 0 != m_root;
387  }
388 
392  virtual IConversionSvc* getDataLoader(IRegistry* pReg);
393 
395  virtual DataObject* createDefaultObject() const;
396 
400  virtual StatusCode loadObject( IRegistry* pNode );
401 
405  virtual StatusCode loadObject( IConversionSvc* pLoader,
406  IRegistry* pNode );
407 
409  StatusCode retrieveEntry( DataSvcHelpers::RegistryEntry* pNode,
410  const std::string& path,
418  DataObject* handleDataFault(IRegistry* pReg, const std::string& path="");
419 private:
420  StatusCode i_retrieveEntry(DataSvcHelpers::RegistryEntry* parentObj,
421  boost::string_ref path,
423  DataObject* i_handleDataFault(IRegistry* pReg, boost::string_ref path = boost::string_ref{});
424 };
425 #endif // GAUDIKERNEL_DATASVC_H
426 
bool m_enableAccessHdlr
Flag to enable interrupts on data access requests.
Definition: DataSvc.h:60
The ISvcLocator is the interface implemented by the Service Factory in the Application Manager to loc...
Definition: ISvcLocator.h:26
bool m_enableFaultHdlr
Flag to enable interrupts on data creation requests.
Definition: DataSvc.h:62
std::string m_rootName
Name of root event.
Definition: DataSvc.h:50
LoadItems m_preLoads
Items to be pre-loaded.
Definition: DataSvc.h:56
std::string m_accessName
Name of the data access incident.
Definition: DataSvc.h:70
bool checkRoot()
Check if root path is valid.
Definition: DataSvc.h:385
Base class used to extend a class implementing other interfaces.
Definition: extends.h:75
DataSvcHelpers::RegistryEntry * m_root
Pointer to root entry.
Definition: DataSvc.h:64
Description of the DataStoreItem class.
Definition: DataStoreItem.h:18
IIncidentSvc * m_incidentSvc
Pointer to incident service.
Definition: DataSvc.h:54
IConversionSvc * m_dataLoader
Pointer to data loader service.
Definition: DataSvc.h:52
DataSvcHelpers::InhibitMap * m_inhibitMap
Map with object paths to be inhibited from loading.
Definition: DataSvc.h:66
std::vector< DataStoreItem > LoadItems
Define set of load items.
Definition: DataSvc.h:44
This class is used for returning status codes from appropriate routines.
Definition: StatusCode.h:30
The IRegistry represents the entry door to the environment any data object residing in a transient da...
Definition: IRegistry.h:22
unsigned int CLID
Class ID definition.
Definition: ClassID.h:9
bool m_forceLeaves
Allow forced creation of default leaves on registerObject.
Definition: DataSvc.h:58
GAUDI_API std::string path(const AIDA::IBaseHistogram *aida)
get the path in THS for AIDA histogram
Definition of an entry in the transient data store.
Definition: RegistryEntry.h:35
std::string m_faultName
Name of the data fault incident.
Definition: DataSvc.h:72
Generic data agent interface.
Data service base class.
Definition: DataSvc.h:40
tuple item
print s1,s2
Definition: ana.py:146
std::vector< std::string > m_inhibitPathes
Property for the inhibited leaves.
Definition: DataSvc.h:68
CLID m_rootCLID
Integer Property corresponding to CLID of root entry.
Definition: DataSvc.h:48
Opaque address interface definition.
#define GAUDI_API
Definition: Kernel.h:108
A DataObject is the base class of any identifiable object on any data store.
Definition: DataObject.h:31
The interface implemented by the IncidentSvc service.
Definition: IIncidentSvc.h:22