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 // Forward declarations
11 // Incident service
12 class IIncidentSvc;
13 // Generic address
14 class IOpaqueAddress;
15 // Generic interface to data object class
16 class DataObject;
17 // Data store agent
18 class IDataStoreAgent;
19 
20 // Do not clutter global namespace for helpers...
21 namespace DataSvcHelpers {
22  // Map of objects where loading is inhibited
23  class InhibitMap;
24  // Generic registry entry
25  class RegistryEntry;
26 }
27 
28 
39 class GAUDI_API DataSvc: public extends2<Service, IDataProviderSvc, IDataManagerSvc>
40 {
41 public:
43  typedef std::vector<DataStoreItem> LoadItems;
44 
45 protected:
49  std::string m_rootName;
65  DataSvcHelpers::InhibitMap* m_inhibitMap;
67  std::vector<std::string> m_inhibitPathes;
69  std::string m_accessName;
71  std::string m_faultName;
72 public:
73 
75  virtual CLID rootCLID() const;
76 
78  virtual std::string rootName() const;
79 
81  virtual StatusCode registerAddress( const std::string& fullPath,
82  IOpaqueAddress* pAddress);
83 
85  virtual StatusCode registerAddress( DataObject* parentObj,
86  const std::string& objectPath,
87  IOpaqueAddress* pAddress);
88 
90  virtual StatusCode registerAddress( IRegistry* parentObj,
91  const std::string& objectPath,
92  IOpaqueAddress* pAddress);
93 
95  virtual StatusCode unregisterAddress(const std::string& fullPath);
96 
98  virtual StatusCode unregisterAddress( DataObject* pParent,
99  const std::string& objPath);
100 
102  virtual StatusCode unregisterAddress( IRegistry* pParent,
103  const std::string& objPath);
104 
108  virtual StatusCode objectLeaves( const DataObject* pObject,
109  std::vector<IRegistry*>& refLeaves);
113  virtual StatusCode objectLeaves( const IRegistry* pRegistry,
114  std::vector<IRegistry*>& refLeaves);
115 
117  virtual StatusCode objectParent( const DataObject* pObject,
118  IRegistry*& refpParent);
120  virtual StatusCode objectParent( const IRegistry* pRegistry,
121  IRegistry*& refpParent);
122 
126  virtual StatusCode clearSubTree( const std::string& sub_tree_path );
127 
131  virtual StatusCode clearSubTree( DataObject* pObject );
132 
134  virtual StatusCode clearStore();
135 
139  virtual StatusCode traverseSubTree( const std::string& sub_tree_path,
140  IDataStoreAgent* pAgent );
141 
143  virtual StatusCode traverseSubTree( DataObject* pObject,
144  IDataStoreAgent* pAgent );
145 
147  virtual StatusCode traverseTree( IDataStoreAgent* pAgent );
148 
151  virtual StatusCode setRoot( const std::string& root_name,
152  DataObject* pRootObj);
153 
157  virtual StatusCode i_setRoot( const std::string& root_name,
158  DataObject* pRootObj);
159 
162  virtual StatusCode setRoot (const std::string& root_path,
163  IOpaqueAddress* pRootAddr);
164 
169  virtual StatusCode i_setRoot (const std::string& root_path,
170  IOpaqueAddress* pRootAddr);
171 
175  virtual StatusCode setDataLoader( IConversionSvc* svc );
176 
178  virtual StatusCode addPreLoadItem( const DataStoreItem& item );
179 
181  virtual StatusCode addPreLoadItem( const std::string& itemPath );
182 
184  virtual StatusCode removePreLoadItem( const DataStoreItem& item );
185 
187  virtual StatusCode removePreLoadItem( const std::string& itemPath );
188 
190  virtual StatusCode resetPreLoad();
191 
199  virtual StatusCode preLoad( int depth,
200  int load_depth,
201  DataObject* pObject );
202 
204  virtual StatusCode preLoad();
205 
207  virtual StatusCode registerObject( const std::string& fullPath,
208  DataObject* pObject );
209 
211  virtual StatusCode registerObject( const std::string& parentPath,
212  const std::string& objPath,
213  DataObject* pObject );
214 
216  virtual StatusCode registerObject( const std::string& parentPath,
217  int item,
218  DataObject* pObject );
219 
221  virtual StatusCode registerObject( DataObject* parentObj,
222  const std::string& objPath,
223  DataObject* pObject );
224 
226  virtual StatusCode registerObject( DataObject* parentObj,
227  int item,
228  DataObject* pObject );
229 
231  virtual StatusCode unregisterObject(const std::string& fullPath );
232 
234  virtual StatusCode unregisterObject(const std::string& parentPath,
235  const std::string& objectPath );
236 
238  virtual StatusCode unregisterObject(const std::string& parentPath,
239  int item );
240 
242  virtual StatusCode unregisterObject(DataObject* pObject );
243 
245  virtual StatusCode unregisterObject(DataObject* pObject,
246  const std::string& objectPath );
247 
249  virtual StatusCode unregisterObject(DataObject* pObject,
250  int item );
251 
253  virtual StatusCode retrieveObject( IRegistry* pDirectory,
254  const std::string& path,
255  DataObject*& pObject );
256 
258  virtual StatusCode retrieveObject( const std::string& fullPath,
259  DataObject*& pObject );
260 
262  virtual StatusCode retrieveObject( const std::string& parentPath,
263  const std::string& objPath,
264  DataObject*& pObject );
265 
267  virtual StatusCode retrieveObject( const std::string& parentPath,
268  int item,
269  DataObject*& pObject );
270 
272  virtual StatusCode retrieveObject( DataObject* parentObj,
273  const std::string& objPath,
274  DataObject*& pObject );
275 
277  virtual StatusCode retrieveObject( DataObject* parentObj,
278  int item,
279  DataObject*& pObject );
280 
282  virtual StatusCode findObject( const std::string& fullPath,
283  DataObject*& pObject );
284 
286  virtual StatusCode findObject( IRegistry* pDirectory,
287  const std::string& path,
288  DataObject*& pObject );
289 
291  virtual StatusCode findObject( const std::string& parentPath,
292  const std::string& objPath,
293  DataObject*& pObject );
294 
296  virtual StatusCode findObject( const std::string& parentPath,
297  int item,
298  DataObject*& pObject );
299 
301  virtual StatusCode findObject( DataObject* parentObj,
302  const std::string& objPath,
303  DataObject*& pObject );
304 
306  virtual StatusCode findObject( DataObject* parentObj,
307  int item,
308  DataObject*& pObject );
309 
311  virtual StatusCode linkObject( IRegistry* from,
312  const std::string& objPath,
313  DataObject* to );
314 
316  virtual StatusCode linkObject( const std::string& fromPath,
317  const std::string& objPath,
318  DataObject* to );
319 
321  virtual StatusCode linkObject( DataObject* from,
322  const std::string& objPath,
323  DataObject* to );
324 
326  virtual StatusCode linkObject( const std::string& fullPath,
327  DataObject* to );
328 
330  virtual StatusCode unlinkObject(IRegistry* from,
331  const std::string& objPath );
332 
334  virtual StatusCode unlinkObject(const std::string& fromPath,
335  const std::string& objPath );
336 
338  virtual StatusCode unlinkObject(DataObject* fromObj,
339  const std::string& objPath );
340 
342  virtual StatusCode unlinkObject(const std::string& fullPath );
343 
345  virtual StatusCode updateObject(IRegistry* pDirectory );
346 
348  virtual StatusCode updateObject(const std::string& updatePath );
349 
351  virtual StatusCode updateObject(DataObject* toUpdate );
352 
354  virtual StatusCode updateObject(const std::string& parentPath,
355  const std::string& updatePath );
356 
358  virtual StatusCode updateObject(DataObject* pParent,
359  const std::string& updatePath );
360 
362  virtual StatusCode initialize();
363 
365  virtual StatusCode reinitialize();
366 
368  virtual StatusCode finalize();
369 
371  DataSvc( const std::string& name, ISvcLocator* svc );
372 
374  virtual ~DataSvc();
375 
376 private:
378  DataSvc(const DataSvc&);
380  DataSvc& operator= (const DataSvc&);
381 
382 protected:
384  bool checkRoot() {
385  return 0 != m_root;
386  }
387 
391  virtual IConversionSvc* getDataLoader(IRegistry* pReg);
392 
394  virtual DataObject* createDefaultObject() const;
395 
399  virtual StatusCode loadObject( IRegistry* pNode );
400 
404  virtual StatusCode loadObject( IConversionSvc* pLoader,
405  IRegistry* pNode );
406 
408  StatusCode retrieveEntry( DataSvcHelpers::RegistryEntry* pNode,
409  const std::string& path,
417  DataObject* handleDataFault(IRegistry* pReg, const std::string& path="");
418 };
419 #endif // GAUDIKERNEL_DATASVC_H
420 
bool m_enableAccessHdlr
Flag to enable interrupts on data access requests.
Definition: DataSvc.h:59
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:61
std::string m_rootName
Name of root event.
Definition: DataSvc.h:49
LoadItems m_preLoads
Items to be pre-loaded.
Definition: DataSvc.h:55
std::string m_accessName
Name of the data access incident.
Definition: DataSvc.h:69
bool checkRoot()
Check if root path is valid.
Definition: DataSvc.h:384
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:63
Description of the DataStoreItem class.
Definition: DataStoreItem.h:18
IIncidentSvc * m_incidentSvc
Pointer to incident service.
Definition: DataSvc.h:53
IConversionSvc * m_dataLoader
Pointer to data loader service.
Definition: DataSvc.h:51
DataSvcHelpers::InhibitMap * m_inhibitMap
Map with object paths to be inhibited from loading.
Definition: DataSvc.h:65
std::vector< DataStoreItem > LoadItems
Define set of load items.
Definition: DataSvc.h:43
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:57
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:34
std::string m_faultName
Name of the data fault incident.
Definition: DataSvc.h:71
Generic data agent interface.
Data service base class.
Definition: DataSvc.h:39
tuple item
print s1,s2
Definition: ana.py:146
std::vector< std::string > m_inhibitPathes
Property for the inhibited leaves.
Definition: DataSvc.h:67
CLID m_rootCLID
Integer Property corresponding to CLID of root entry.
Definition: DataSvc.h:47
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