ATLAS Offline Software
Loading...
Searching...
No Matches
SG::ReadMetaHandle< T > Class Template Reference

#include <ReadMetaHandle.h>

Collaboration diagram for SG::ReadMetaHandle< T >:

Public Types

typedef T * pointer_type
typedef const T * const_pointer_type
typedef T & reference_type
typedef const T & const_reference_type

Public Member Functions

 ReadMetaHandle (const SG::ReadMetaHandleKey< T > &key)
 ReadMetaHandle (const SG::ReadMetaHandleKey< T > &key, const EventContext &ctx)
 ReadMetaHandle (SG::ReadMetaHandleKey< T > &&key)=delete
 ReadMetaHandle (SG::ReadMetaHandleKey< T > &&key, const EventContext &ctx)=delete
 ~ReadMetaHandle ()
const_pointer_type retrieve ()
const_pointer_type retrieve (const SG::SourceID &t)
const_pointer_type operator-> ()
const_pointer_type operator* ()
bool isValid ()

Private Member Functions

bool initMetaHandle ()

Private Attributes

SG::SourceID m_sid
const MetaCont< T > * m_cont {nullptr}
T * m_ent {nullptr}
const SG::ReadMetaHandleKey< T > & m_hkey

Detailed Description

template<typename T>
class SG::ReadMetaHandle< T >

Definition at line 26 of file ReadMetaHandle.h.

Member Typedef Documentation

◆ const_pointer_type

template<typename T>
typedef const T* SG::ReadMetaHandle< T >::const_pointer_type

Definition at line 30 of file ReadMetaHandle.h.

◆ const_reference_type

template<typename T>
typedef const T& SG::ReadMetaHandle< T >::const_reference_type

Definition at line 32 of file ReadMetaHandle.h.

◆ pointer_type

template<typename T>
typedef T* SG::ReadMetaHandle< T >::pointer_type

Definition at line 29 of file ReadMetaHandle.h.

◆ reference_type

template<typename T>
typedef T& SG::ReadMetaHandle< T >::reference_type

Definition at line 31 of file ReadMetaHandle.h.

Constructor & Destructor Documentation

◆ ReadMetaHandle() [1/4]

template<typename T>
SG::ReadMetaHandle< T >::ReadMetaHandle ( const SG::ReadMetaHandleKey< T > & key)

Definition at line 68 of file ReadMetaHandle.h.

70 {
71 }
ReadMetaHandle(const SG::ReadMetaHandleKey< T > &key)

◆ ReadMetaHandle() [2/4]

template<typename T>
SG::ReadMetaHandle< T >::ReadMetaHandle ( const SG::ReadMetaHandleKey< T > & key,
const EventContext & ctx )

Definition at line 76 of file ReadMetaHandle.h.

79 , m_cont( key.getContainer() )
80 , m_hkey(key)
81 {
82 MsgStream msg(Athena::getMessageSvc(), "ReadMetaHandle");
83 if (!m_hkey.isInit()) [[unlikely]] {
84 msg << MSG::ERROR
85 << "ReadMetaHandleKey " << key.objKey() << " was not initialized"
86 << endmsg;
87 throw std::runtime_error("ReadMetaHandle: ReadMetaHandleKey was not initialized");
88 }
89
90 if (m_cont == 0) [[unlikely]] {
91 // Try to retrieve it
92 MetaContBase* cb{nullptr};
93 if(m_hkey.getStore()->retrieve(cb, m_hkey.key()).isFailure()) {
95 << "can't retrieve " << m_hkey.fullKey()
96 << " via base class" << endmsg;
97 throw std::runtime_error("ReadCondHandle: ptr to CondCont<T> is zero");
98 }
99 else {
100 m_cont = dynamic_cast< MetaCont<T>* > (cb);
101 if(!m_cont) {
102 msg << MSG::ERROR
103 << "can't dcast MetaContBase to " << m_hkey.fullKey()
104 << endmsg;
105 throw std::runtime_error("ReadMetaHandle: ptr to MetaCont<T> is zero");
106 }
107 }
108 }
109 }
const SG::ReadMetaHandleKey< T > & m_hkey
const MetaCont< T > * m_cont
MsgStream & msg
Definition testRead.cxx:32

◆ ReadMetaHandle() [3/4]

template<typename T>
SG::ReadMetaHandle< T >::ReadMetaHandle ( SG::ReadMetaHandleKey< T > && key)
delete

◆ ReadMetaHandle() [4/4]

template<typename T>
SG::ReadMetaHandle< T >::ReadMetaHandle ( SG::ReadMetaHandleKey< T > && key,
const EventContext & ctx )
delete

◆ ~ReadMetaHandle()

template<typename T>
SG::ReadMetaHandle< T >::~ReadMetaHandle ( )
inline

Definition at line 43 of file ReadMetaHandle.h.

43{};

Member Function Documentation

◆ initMetaHandle()

template<typename T>
bool SG::ReadMetaHandle< T >::initMetaHandle ( )
private

Definition at line 115 of file ReadMetaHandle.h.

116 {
117
118 if (m_ent) return true;
119
120 // Initialize sid from dbKey found at ReadMetaHandleKey initialize
121// m_sid = m_hkey.dbKey(); ???? Do I need this ????
122
123 if (! m_cont->find(m_sid, m_ent)) [[unlikely]] {
125 m_cont->list(ost);
126 MsgStream msg(Athena::getMessageSvc(), "ReadMetaHandle");
127 msg << MSG::ERROR
128 << "ReadMetaHandle:: could not find current SourceID "
129 << m_sid << " for key " << m_hkey.objKey() << "\n"
130 << ost.str() << endmsg;
131 m_ent = nullptr;
132 return false;
133 }
134
135 return true;
136 }

◆ isValid()

template<typename T>
bool SG::ReadMetaHandle< T >::isValid ( )

Definition at line 184 of file ReadMetaHandle.h.

184 {
185
186 return initMetaHandle();
187 }

◆ operator*()

template<typename T>
const_pointer_type SG::ReadMetaHandle< T >::operator* ( )
inline

Definition at line 49 of file ReadMetaHandle.h.

49{ return retrieve(); }
const_pointer_type retrieve()

◆ operator->()

template<typename T>
const_pointer_type SG::ReadMetaHandle< T >::operator-> ( )
inline

Definition at line 48 of file ReadMetaHandle.h.

48{ return retrieve(); }

◆ retrieve() [1/2]

template<typename T>
const T * SG::ReadMetaHandle< T >::retrieve ( )

Definition at line 142 of file ReadMetaHandle.h.

143 {
144
145 if (m_ent == 0) {
146 if (!initMetaHandle()) {
147 return nullptr;
148 }
149 }
150
151 return m_ent;
152 }

◆ retrieve() [2/2]

template<typename T>
const T * SG::ReadMetaHandle< T >::retrieve ( const SG::SourceID & t)

Definition at line 158 of file ReadMetaHandle.h.

159 {
160 if (sid == m_sid) {
161 return retrieve();
162 }
163
164 pointer_type obj(0);
165 if (! (m_cont->find(sid, obj) ) ) {
167 m_cont->list(ost);
168 MsgStream msg(Athena::getMessageSvc(), "ReadMetaHandle");
169 msg << MSG::ERROR
170 << "ReadMetaHandle::retrieve() could not find SourceID "
171 << sid << " for key " << m_hkey.objKey() << "\n"
172 << ost.str()
173 << endmsg;
174 return nullptr;
175 }
176
177 return obj;
178 }

Member Data Documentation

◆ m_cont

template<typename T>
const MetaCont<T>* SG::ReadMetaHandle< T >::m_cont {nullptr}
private

Definition at line 58 of file ReadMetaHandle.h.

58{nullptr};

◆ m_ent

template<typename T>
T* SG::ReadMetaHandle< T >::m_ent {nullptr}
private

Definition at line 59 of file ReadMetaHandle.h.

59{nullptr};

◆ m_hkey

template<typename T>
const SG::ReadMetaHandleKey<T>& SG::ReadMetaHandle< T >::m_hkey
private

Definition at line 61 of file ReadMetaHandle.h.

◆ m_sid

template<typename T>
SG::SourceID SG::ReadMetaHandle< T >::m_sid
private

Definition at line 57 of file ReadMetaHandle.h.


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