The Gaudi Framework  master (ff829712)
Loading...
Searching...
No Matches
DataSvcHelpers::RegistryEntry Class Referencefinal

Definition of an entry in the transient data store. More...

#include <GaudiKernel/RegistryEntry.h>

Inheritance diagram for DataSvcHelpers::RegistryEntry:
Collaboration diagram for DataSvcHelpers::RegistryEntry:

Public Types

typedef Store::const_iterator Iterator
 Iterator definition.
 
- Public Types inherited from IRegistry
typedef std::string name_type
 Name type.
 
typedef std::string id_type
 Identifier Key type.
 

Public Member Functions

 RegistryEntry (std::string path, RegistryEntry *parent=nullptr)
 Standard Constructor.
 
 ~RegistryEntry () override
 Standard Destructor.
 
unsigned long release () override
 IInterface implementation: Reference the object.
 
unsigned long addRef () override
 IInterface implementation: Dereference the object.
 
const std::string & name () const override
 Retrieve name of the entry.
 
const std::string & identifier () const override
 Full identifier (or key)
 
IDataProviderSvcdataSvc () const override
 Retrieve pointer to Transient Store.
 
DataObjectobject () const override
 Retrive object behind the link.
 
IOpaqueAddressaddress () const override
 Retrieve opaque storage address.
 
IRegistryparent () const
 Pointer to parent directory entry.
 
bool isSoft () const
 Is the link soft or hard.
 
const Storeleaves () const
 Access the leaves of the object.
 
size_t size () const
 Return the size of the container(=number of objects)
 
bool isEmpty () const
 Simple check if the Container is empty.
 
Iterator begin () const
 Return starting point for container iteration.
 
Iterator end () const
 Return end elemtn if the container.
 
IRegistryfind (const IRegistry *obj) const
 Try to find an object identified by its pointer.
 
IRegistryfind (std::string_view path) const
 Try to find an object identified by its relative name to the directory.
 
void setAddress (IOpaqueAddress *pAddress) override
 Set/Update Opaque address.
 
void setObject (DataObject *obj)
 Set/Update object address.
 
StatusCode add (std::string name, DataObject *pObject, bool is_soft=false)
 Add entry to data store.
 
StatusCode add (std::string name, IOpaqueAddress *pAddress, bool is_soft=false)
 Add entry to data store.
 
StatusCode remove (std::string_view name)
 Remove an entry from the store.
 
long add (IRegistry *obj)
 Add object to the container.
 
long remove (IRegistry *obj)
 Remove an object from the container.
 
long deleteElements ()
 Delete all contained elements.
 
StatusCode traverseTree (IDataStoreAgent *pAgent, int level=0)
 traverse data tree
 
- Public Member Functions inherited from IRegistry
virtual ~IRegistry ()=default
 destructor
 

Private Types

typedef std::vector< IRegistry * > Store
 Definition of datastore type.
 

Private Member Functions

void assemblePath (std::string &buffer) const
 The following entries serve two aspects: 1) They are faster for recursive calls, because they are non-virtual 2) They can be re-used for the non-const entry points using a const_cast of the result.
 
IRegistryi_find (const IRegistry *pDirectory) const
 Internal method to retrieve data directory.
 
RegistryEntryi_find (std::string_view path) const
 Internal method to retrieve data directory.
 
RegistryEntryi_find (const DataObject *pObject) const
 Internal method to locate object entry.
 
RegistryEntryi_create (std::string name)
 Internal method to create entries.
 
long i_add (RegistryEntry *entry)
 Internal method to add entries.
 
void setParent (RegistryEntry *pParent)
 Set new parent pointer.
 
void setDataSvc (IDataProviderSvc *s)
 Set the transient data store.
 
RegistryEntryparentEntry ()
 Pointer to parent registry entry.
 
RegistryEntryfindLeaf (std::string_view path) const
 Find identified leaf in this registry node.
 
RegistryEntryfindLeaf (const DataObject *key) const
 Find identified leaf in this registry node.
 
void makeHard (DataObject *pObject)
 Initialize link as hard link.
 
void makeHard (IOpaqueAddress *pAddress)
 Initialize link as hard link.
 
void makeSoft (DataObject *pObject)
 Initialize link as soft link.
 
void makeSoft (IOpaqueAddress *pAddress)
 Initialize link as soft link.
 

Private Attributes

unsigned long m_refCount = 0
 Reference counter.
 
bool m_isSoft = false
 Is the link soft or hard?
 
std::string m_fullpath
 String containing full path of the object (volatile)
 
std::string m_path
 Path name.
 
RegistryEntrym_pParent = nullptr
 Pointer to parent.
 
IOpaqueAddressm_pAddress = nullptr
 Pointer to opaque address (load info)
 
DataObjectm_pObject = nullptr
 Pointer to object.
 
IDataProviderSvcm_pDataProviderSvc = nullptr
 Pointer to hosting transient store.
 
Store m_store
 Store of leaves.
 

Friends

class ::DataSvc
 
class ::TsDataSvc
 

Detailed Description

Definition of an entry in the transient data store.

The RegistryEntry represents an entry of the transient data store. The object holds the recipe how to retrieve objects from the persistent world (member IOpaqueAddress) as well as the backward link to the parent entry and the leaves.

Author
Markus Frank
Sebastien Ponce

Definition at line 41 of file RegistryEntry.h.

Member Typedef Documentation

◆ Iterator

typedef Store::const_iterator DataSvcHelpers::RegistryEntry::Iterator

Iterator definition.

Definition at line 51 of file RegistryEntry.h.

◆ Store

typedef std::vector<IRegistry*> DataSvcHelpers::RegistryEntry::Store
private

Definition of datastore type.

Definition at line 44 of file RegistryEntry.h.

Constructor & Destructor Documentation

◆ RegistryEntry()

DataSvcHelpers::RegistryEntry::RegistryEntry ( std::string path,
RegistryEntry * parent = nullptr )

Standard Constructor.

Definition at line 28 of file RegistryEntry.cpp.

29 : m_path( std::move( path ) ), m_pParent( parent ) {
30 std::string::size_type sep = m_path.rfind( SEPARATOR );
31 if ( m_path.front() != SEPARATOR ) m_path.insert( 0, 1, SEPARATOR );
32 if ( sep != std::string::npos ) m_path.erase( 0, sep );
34 addRef();
35}
std::string m_fullpath
String containing full path of the object (volatile)
unsigned long addRef() override
IInterface implementation: Dereference the object.
IRegistry * parent() const
Pointer to parent directory entry.
void assemblePath(std::string &buffer) const
The following entries serve two aspects: 1) They are faster for recursive calls, because they are non...
RegistryEntry * m_pParent
Pointer to parent.
std::string m_path
Path name.

◆ ~RegistryEntry()

DataSvcHelpers::RegistryEntry::~RegistryEntry ( )
override

Standard Destructor.

Standard destructor.

Definition at line 38 of file RegistryEntry.cpp.

38 {
40 if ( m_pObject ) {
41 if ( !m_isSoft ) m_pObject->setRegistry( nullptr );
42 m_pObject->release();
43 }
44 if ( m_pAddress ) {
45 if ( !m_isSoft ) m_pAddress->setRegistry( nullptr );
46 m_pAddress->release();
47 }
48}
DataObject * m_pObject
Pointer to object.
bool m_isSoft
Is the link soft or hard?
long deleteElements()
Delete all contained elements.
IOpaqueAddress * m_pAddress
Pointer to opaque address (load info)

Member Function Documentation

◆ add() [1/3]

long DataSvcHelpers::RegistryEntry::add ( IRegistry * obj)

Add object to the container.

Definition at line 149 of file RegistryEntry.cpp.

149 {
150 RegistryEntry* pEntry = CAST_REGENTRY( RegistryEntry*, obj );
151 return i_add( pEntry );
152}
#define CAST_REGENTRY(x, y)
Definition DataSvc.cpp:46
long i_add(RegistryEntry *entry)
Internal method to add entries.
RegistryEntry(std::string path, RegistryEntry *parent=nullptr)
Standard Constructor.

◆ add() [2/3]

StatusCode DataSvcHelpers::RegistryEntry::add ( std::string name,
DataObject * pObject,
bool is_soft = false )

Add entry to data store.

Add entry to the current data store item.

Definition at line 173 of file RegistryEntry.cpp.

173 {
174 RegistryEntry* entry = i_create( std::move( name ) );
175 if ( !entry ) return StatusCode::FAILURE;
176 ( is_soft ) ? entry->makeSoft( pObject ) : entry->makeHard( pObject );
177 i_add( entry );
178 return StatusCode::SUCCESS;
179}
RegistryEntry * i_create(std::string name)
Internal method to create entries.
const std::string & name() const override
Retrieve name of the entry.
constexpr static const auto SUCCESS
Definition StatusCode.h:99
constexpr static const auto FAILURE
Definition StatusCode.h:100

◆ add() [3/3]

StatusCode DataSvcHelpers::RegistryEntry::add ( std::string name,
IOpaqueAddress * pAddress,
bool is_soft = false )

Add entry to data store.

Add entry to the current data store item.

Definition at line 182 of file RegistryEntry.cpp.

182 {
183 RegistryEntry* entry = i_create( std::move( name ) );
184 if ( !entry ) return StatusCode::FAILURE;
185 ( is_soft ) ? entry->makeSoft( pAddress ) : entry->makeHard( pAddress );
186 i_add( entry );
187 return StatusCode::SUCCESS;
188}

◆ addRef()

unsigned long DataSvcHelpers::RegistryEntry::addRef ( )
inlineoverridevirtual

IInterface implementation: Dereference the object.

Implements IRegistry.

Definition at line 118 of file RegistryEntry.h.

118{ return ++m_refCount; }
unsigned long m_refCount
Reference counter.

◆ address()

IOpaqueAddress * DataSvcHelpers::RegistryEntry::address ( ) const
inlineoverridevirtual

Retrieve opaque storage address.

Implements IRegistry.

Definition at line 128 of file RegistryEntry.h.

128{ return m_pAddress; }

◆ assemblePath()

void DataSvcHelpers::RegistryEntry::assemblePath ( std::string & buffer) const
private

The following entries serve two aspects: 1) They are faster for recursive calls, because they are non-virtual 2) They can be re-used for the non-const entry points using a const_cast of the result.

Recursive helper to assemble the full path name of the entry

Definition at line 271 of file RegistryEntry.cpp.

271 {
272 if ( m_pParent ) m_pParent->assemblePath( buffer );
273 buffer += m_path;
274}

◆ begin()

Iterator DataSvcHelpers::RegistryEntry::begin ( ) const
inline

Return starting point for container iteration.

Definition at line 140 of file RegistryEntry.h.

140{ return m_store.begin(); }
Store m_store
Store of leaves.

◆ dataSvc()

IDataProviderSvc * DataSvcHelpers::RegistryEntry::dataSvc ( ) const
inlineoverridevirtual

Retrieve pointer to Transient Store.

Implements IRegistry.

Definition at line 124 of file RegistryEntry.h.

124{ return m_pDataProviderSvc; }
IDataProviderSvc * m_pDataProviderSvc
Pointer to hosting transient store.

◆ deleteElements()

long DataSvcHelpers::RegistryEntry::deleteElements ( )

Delete all contained elements.

Delete recursively all elements pending from the current store item.

Definition at line 191 of file RegistryEntry.cpp.

191 {
192 for ( auto& i : m_store ) {
194 if ( entry ) {
195 entry->deleteElements();
196 entry->release();
197 }
198 }
199 m_store.erase( m_store.begin(), m_store.end() );
200 return 0;
201}

◆ end()

Iterator DataSvcHelpers::RegistryEntry::end ( ) const
inline

Return end elemtn if the container.

Definition at line 142 of file RegistryEntry.h.

142{ return m_store.end(); }

◆ find() [1/2]

IRegistry * DataSvcHelpers::RegistryEntry::find ( const IRegistry * obj) const
inline

Try to find an object identified by its pointer.

Definition at line 144 of file RegistryEntry.h.

144{ return i_find( obj ); }
IRegistry * i_find(const IRegistry *pDirectory) const
Internal method to retrieve data directory.

◆ find() [2/2]

IRegistry * DataSvcHelpers::RegistryEntry::find ( std::string_view path) const
inline

Try to find an object identified by its relative name to the directory.

Definition at line 146 of file RegistryEntry.h.

146{ return i_find( path ); }

◆ findLeaf() [1/2]

RegistryEntry * DataSvcHelpers::RegistryEntry::findLeaf ( const DataObject * key) const
inlineprivate

Find identified leaf in this registry node.

Definition at line 100 of file RegistryEntry.h.

100{ return i_find( key ); }

◆ findLeaf() [2/2]

RegistryEntry * DataSvcHelpers::RegistryEntry::findLeaf ( std::string_view path) const
inlineprivate

Find identified leaf in this registry node.

Definition at line 98 of file RegistryEntry.h.

98{ return i_find( path ); }

◆ i_add()

long DataSvcHelpers::RegistryEntry::i_add ( RegistryEntry * entry)
private

Internal method to add entries.

Add object to the container.

Definition at line 155 of file RegistryEntry.cpp.

155 {
156 // TODO: if this is the sole place where items are added to m_store,
157 // and we know here that they must be RegisteryEntry, can we
158 // drop the dynamic_cast every where else???
159 // TODO: if so, can we also change m_store to be std::vector<RegistryEntry*>
160 // instead
161 // TODO: if so, can we not make it std::vector<RegistryEntry> instead?
162 // TODO: if so, should make sure that a RegistryEntry can be std::move'ed
163 try {
164 pEntry->setDataSvc( m_pDataProviderSvc );
165 m_store.push_back( pEntry );
166 pEntry->setParent( this );
167 if ( !pEntry->isSoft() && pEntry->address() ) { pEntry->address()->setRegistry( pEntry ); }
168 } catch ( ... ) {}
169 return m_store.size();
170}

◆ i_create()

DataSvcHelpers::RegistryEntry * DataSvcHelpers::RegistryEntry::i_create ( std::string name)
private

Internal method to create entries.

Internal method to add entries.

Definition at line 140 of file RegistryEntry.cpp.

140 {
141 if ( nam.front() != SEPARATOR ) nam.insert( 0, 1, SEPARATOR );
142 // if this object is already present, this is an error....
143 auto not_present =
144 std::none_of( std::begin( m_store ), std::end( m_store ), [&]( IRegistry* i ) { return nam == i->name(); } );
145 return not_present ? new RegistryEntry( std::move( nam ), this ) : nullptr;
146}
virtual const name_type & name() const =0
Name of the directory (or key)

◆ i_find() [1/3]

DataSvcHelpers::RegistryEntry * DataSvcHelpers::RegistryEntry::i_find ( const DataObject * pObject) const
private

Internal method to locate object entry.

Find identified leaf in this registry node.

Definition at line 237 of file RegistryEntry.cpp.

237 {
238 if ( key ) {
239 if ( key == m_pObject ) return const_cast<RegistryEntry*>( this );
240 // Look in the immediate level:
241 RegistryEntry* result = CAST_REGENTRY( RegistryEntry*, i_find( key->registry() ) );
242 if ( result ) return result;
243 // Go levels down
244 for ( const auto& i : m_store ) {
245 try {
246 const RegistryEntry* entry = CAST_REGENTRY( RegistryEntry*, i );
247 result = entry->i_find( key );
248 if ( result ) return result;
249 } catch ( ... ) {}
250 }
251 }
252 return nullptr;
253}

◆ i_find() [2/3]

IRegistry * DataSvcHelpers::RegistryEntry::i_find ( const IRegistry * pDirectory) const
private

Internal method to retrieve data directory.

Try to find an object identified by its pointer.

Definition at line 204 of file RegistryEntry.cpp.

204 {
205 auto i = std::find( m_store.begin(), m_store.end(), obj );
206 return ( i != m_store.end() ) ? ( *i ) : nullptr;
207}

◆ i_find() [3/3]

DataSvcHelpers::RegistryEntry * DataSvcHelpers::RegistryEntry::i_find ( std::string_view path) const
private

Internal method to retrieve data directory.

Find identified leaf in this registry node.

Definition at line 210 of file RegistryEntry.cpp.

210 {
211 if ( path.front() == SEPARATOR ) path.remove_prefix( 1 ); // strip leading '/', if present
212 while ( !path.empty() ) {
213 // check that the chars of path prior to / are the same as regEnt->name()
214 // (i.e. match { nam:"/Ab" path:"/Ab/C"}
215 // but not { nam:"/Abc" path:"/Ab/C"})
216 auto loc1 = path.find( SEPARATOR );
217 auto cpath = path.substr( 0, loc1 );
218 if ( loc1 != std::string_view::npos ) {
219 path.remove_prefix( loc1 + 1 );
220 } else {
221 path = std::string_view{};
222 }
223 auto i = std::find_if( std::begin( m_store ), std::end( m_store ),
224 [&]( const auto& reg ) { return cpath == std::string_view{ reg->name() }.substr( 1 ); } );
225 if ( i != std::end( m_store ) ) {
226 RegistryEntry* regEnt = CAST_REGENTRY( RegistryEntry*, *i );
227 return path.empty() ? regEnt : regEnt->i_find( path );
228 }
229 // If this node is "/NodeA", this part allows to find "/NodeA/NodeB" as
230 // our "/NodeB" child.
231 if ( cpath != std::string_view{ m_path }.substr( 1 ) ) break;
232 }
233 return nullptr;
234}
GAUDI_API std::string path(const AIDA::IBaseHistogram *aida)
get the path in THS for AIDA histogram

◆ identifier()

const std::string & DataSvcHelpers::RegistryEntry::identifier ( ) const
inlineoverridevirtual

Full identifier (or key)

Implements IRegistry.

Definition at line 122 of file RegistryEntry.h.

122{ return m_fullpath; }

◆ isEmpty()

bool DataSvcHelpers::RegistryEntry::isEmpty ( ) const
inline

Simple check if the Container is empty.

Definition at line 138 of file RegistryEntry.h.

138{ return m_store.size() == 0; }

◆ isSoft()

bool DataSvcHelpers::RegistryEntry::isSoft ( ) const
inline

Is the link soft or hard.

Definition at line 132 of file RegistryEntry.h.

132{ return m_isSoft; }

◆ leaves()

const Store & DataSvcHelpers::RegistryEntry::leaves ( ) const
inline

Access the leaves of the object.

Definition at line 134 of file RegistryEntry.h.

134{ return m_store; }

◆ makeHard() [1/2]

void DataSvcHelpers::RegistryEntry::makeHard ( DataObject * pObject)
private

Initialize link as hard link.

Create hard link.

Definition at line 80 of file RegistryEntry.cpp.

80 {
81 makeSoft( pObject );
82 m_isSoft = false;
83 if ( m_pObject ) m_pObject->setRegistry( this );
84 if ( m_pAddress ) m_pAddress->setRegistry( this );
85}
void makeSoft(DataObject *pObject)
Initialize link as soft link.

◆ makeHard() [2/2]

void DataSvcHelpers::RegistryEntry::makeHard ( IOpaqueAddress * pAddress)
private

Initialize link as hard link.

Create hard link.

Definition at line 88 of file RegistryEntry.cpp.

88 {
89 m_isSoft = false;
90 setAddress( pAddress );
91}
void setAddress(IOpaqueAddress *pAddress) override
Set/Update Opaque address.

◆ makeSoft() [1/2]

void DataSvcHelpers::RegistryEntry::makeSoft ( DataObject * pObject)
private

Initialize link as soft link.

Create soft link.

Definition at line 65 of file RegistryEntry.cpp.

65 {
66 m_isSoft = true;
67 setObject( pObject );
68 // if ( 0 != m_pObject ) { // Useless: This justs sets my own address again...
69 // setAddress(m_pObject->address());
70 // }
71}
void setObject(DataObject *obj)
Set/Update object address.

◆ makeSoft() [2/2]

void DataSvcHelpers::RegistryEntry::makeSoft ( IOpaqueAddress * pAddress)
private

Initialize link as soft link.

Create soft link.

Definition at line 74 of file RegistryEntry.cpp.

74 {
75 m_isSoft = true;
76 setAddress( pAddress );
77}

◆ name()

const std::string & DataSvcHelpers::RegistryEntry::name ( ) const
inlineoverridevirtual

Retrieve name of the entry.

Implements IRegistry.

Definition at line 120 of file RegistryEntry.h.

120{ return m_path; }

◆ object()

DataObject * DataSvcHelpers::RegistryEntry::object ( ) const
inlineoverridevirtual

Retrive object behind the link.

Implements IRegistry.

Definition at line 126 of file RegistryEntry.h.

126{ return m_pObject; }

◆ parent()

IRegistry * DataSvcHelpers::RegistryEntry::parent ( ) const
inline

Pointer to parent directory entry.

Definition at line 130 of file RegistryEntry.h.

130{ return m_pParent; }

◆ parentEntry()

RegistryEntry * DataSvcHelpers::RegistryEntry::parentEntry ( )
inlineprivate

Pointer to parent registry entry.

Definition at line 96 of file RegistryEntry.h.

96{ return m_pParent; }

◆ release()

unsigned long DataSvcHelpers::RegistryEntry::release ( )
overridevirtual

IInterface implementation: Reference the object.

Release entry.

Implements IRegistry.

Definition at line 51 of file RegistryEntry.cpp.

51 {
52 unsigned long cnt = --m_refCount;
53 if ( !m_refCount ) delete this;
54 return cnt;
55}

◆ remove() [1/2]

long DataSvcHelpers::RegistryEntry::remove ( IRegistry * obj)

Remove an object from the container.

Definition at line 114 of file RegistryEntry.cpp.

114 {
115 try {
116 RegistryEntry* pEntry = dynamic_cast<RegistryEntry*>( obj );
117 auto i = std::remove( std::begin( m_store ), std::end( m_store ), pEntry );
118 if ( i != std::end( m_store ) ) {
119 pEntry->release();
120 m_store.erase( i, std::end( m_store ) );
121 }
122 } catch ( ... ) {}
123 return m_store.size();
124}

◆ remove() [2/2]

StatusCode DataSvcHelpers::RegistryEntry::remove ( std::string_view name)

Remove an entry from the store.

Remove entry from data store.

Definition at line 127 of file RegistryEntry.cpp.

127 {
128 if ( nam.front() == SEPARATOR ) nam.remove_prefix( 1 );
129 auto i = std::find_if( m_store.begin(), m_store.end(), [&]( const auto* entry ) {
130 // skip leading SEPARATOR
131 return entry->name().compare( 1, std::string::npos, nam.data(), nam.size() ) == 0;
132 } );
133 // if the requested object is not present, this is an error....
134 if ( i == m_store.end() ) return StatusCode::FAILURE;
135 remove( *i );
136 return StatusCode::SUCCESS;
137}
StatusCode remove(std::string_view name)
Remove an entry from the store.

◆ setAddress()

void DataSvcHelpers::RegistryEntry::setAddress ( IOpaqueAddress * pAddress)
overridevirtual

Set/Update Opaque address.

Update Opaque address of registry entry.

Implements IRegistry.

Definition at line 94 of file RegistryEntry.cpp.

94 {
95 if ( pAddress ) {
96 pAddress->addRef();
97 pAddress->setRegistry( this );
98 }
99 if ( m_pAddress ) m_pAddress->release();
100 m_pAddress = pAddress;
101}
virtual void setRegistry(IRegistry *r)=0
Update directory pointer.
virtual unsigned long addRef()=0
Add reference to object.

◆ setDataSvc()

void DataSvcHelpers::RegistryEntry::setDataSvc ( IDataProviderSvc * s)
inlineprivate

Set the transient data store.

Definition at line 94 of file RegistryEntry.h.

◆ setObject()

void DataSvcHelpers::RegistryEntry::setObject ( DataObject * obj)

Set/Update object address.

Set object pointer of data store item.

Definition at line 104 of file RegistryEntry.cpp.

104 {
105 if ( pObject ) {
106 pObject->addRef();
107 if ( !isSoft() ) pObject->setRegistry( this );
108 }
109 if ( m_pObject ) m_pObject->release();
110 m_pObject = pObject;
111}
bool isSoft() const
Is the link soft or hard.

◆ setParent()

void DataSvcHelpers::RegistryEntry::setParent ( RegistryEntry * pParent)
private

Set new parent pointer.

Definition at line 58 of file RegistryEntry.cpp.

58 {
59 m_pParent = pParent;
60 m_fullpath.clear();
62}

◆ size()

size_t DataSvcHelpers::RegistryEntry::size ( ) const
inline

Return the size of the container(=number of objects)

Definition at line 136 of file RegistryEntry.h.

136{ return m_store.size(); }

◆ traverseTree()

StatusCode DataSvcHelpers::RegistryEntry::traverseTree ( IDataStoreAgent * pAgent,
int level = 0 )

traverse data tree

Definition at line 256 of file RegistryEntry.cpp.

256 {
257 bool go_down = pAgent->analyse( this, level );
258 StatusCode status;
259 if ( go_down ) {
260 for ( auto& i : m_store ) {
261 try {
263 entry->traverseTree( pAgent, level + 1 ).ignore();
264 } catch ( ... ) { status = StatusCode::FAILURE; }
265 }
266 }
267 return status;
268}
virtual bool analyse(IRegistry *pObject, int level)=0
Analyse the data object.

Friends And Related Symbol Documentation

◆ ::DataSvc

friend class ::DataSvc
friend

Definition at line 47 of file RegistryEntry.h.

◆ ::TsDataSvc

friend class ::TsDataSvc
friend

Definition at line 49 of file RegistryEntry.h.

Member Data Documentation

◆ m_fullpath

std::string DataSvcHelpers::RegistryEntry::m_fullpath
private

String containing full path of the object (volatile)

Definition at line 59 of file RegistryEntry.h.

◆ m_isSoft

bool DataSvcHelpers::RegistryEntry::m_isSoft = false
private

Is the link soft or hard?

Definition at line 57 of file RegistryEntry.h.

◆ m_pAddress

IOpaqueAddress* DataSvcHelpers::RegistryEntry::m_pAddress = nullptr
private

Pointer to opaque address (load info)

Definition at line 65 of file RegistryEntry.h.

◆ m_path

std::string DataSvcHelpers::RegistryEntry::m_path
private

Path name.

Definition at line 61 of file RegistryEntry.h.

◆ m_pDataProviderSvc

IDataProviderSvc* DataSvcHelpers::RegistryEntry::m_pDataProviderSvc = nullptr
private

Pointer to hosting transient store.

Definition at line 69 of file RegistryEntry.h.

◆ m_pObject

DataObject* DataSvcHelpers::RegistryEntry::m_pObject = nullptr
private

Pointer to object.

Definition at line 67 of file RegistryEntry.h.

◆ m_pParent

RegistryEntry* DataSvcHelpers::RegistryEntry::m_pParent = nullptr
private

Pointer to parent.

Definition at line 63 of file RegistryEntry.h.

◆ m_refCount

unsigned long DataSvcHelpers::RegistryEntry::m_refCount = 0
private

Reference counter.

Definition at line 55 of file RegistryEntry.h.

◆ m_store

Store DataSvcHelpers::RegistryEntry::m_store
private

Store of leaves.

Definition at line 71 of file RegistryEntry.h.


The documentation for this class was generated from the following files: