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 27 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 31 of file ReadMetaHandle.h.

◆ const_reference_type

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

Definition at line 33 of file ReadMetaHandle.h.

◆ pointer_type

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

Definition at line 30 of file ReadMetaHandle.h.

◆ reference_type

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

Definition at line 32 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 69 of file ReadMetaHandle.h.

71 {
72 }
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 77 of file ReadMetaHandle.h.

80 , m_cont( key.getContainer() )
81 , m_hkey(key)
82 {
83 MsgStream msg(Athena::getMessageSvc(), "ReadMetaHandle");
84 if (ATH_UNLIKELY(!m_hkey.isInit())) {
85 msg << MSG::ERROR
86 << "ReadMetaHandleKey " << key.objKey() << " was not initialized"
87 << endmsg;
88 throw std::runtime_error("ReadMetaHandle: ReadMetaHandleKey was not initialized");
89 }
90
91 if (ATH_UNLIKELY(m_cont == 0)) {
92 // Try to retrieve it
93 MetaContBase* cb{nullptr};
94 if(m_hkey.getStore()->retrieve(cb, m_hkey.key()).isFailure()) {
96 << "can't retrieve " << m_hkey.fullKey()
97 << " via base class" << endmsg;
98 throw std::runtime_error("ReadCondHandle: ptr to CondCont<T> is zero");
99 }
100 else {
101 m_cont = dynamic_cast< MetaCont<T>* > (cb);
102 if(!m_cont) {
103 msg << MSG::ERROR
104 << "can't dcast MetaContBase to " << m_hkey.fullKey()
105 << endmsg;
106 throw std::runtime_error("ReadMetaHandle: ptr to MetaCont<T> is zero");
107 }
108 }
109 }
110 }
#define ATH_UNLIKELY(x)
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 44 of file ReadMetaHandle.h.

44{};

Member Function Documentation

◆ initMetaHandle()

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

Definition at line 116 of file ReadMetaHandle.h.

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

◆ isValid()

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

Definition at line 185 of file ReadMetaHandle.h.

185 {
186
187 return initMetaHandle();
188 }

◆ operator*()

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

Definition at line 50 of file ReadMetaHandle.h.

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

◆ operator->()

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

Definition at line 49 of file ReadMetaHandle.h.

49{ return retrieve(); }

◆ retrieve() [1/2]

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

Definition at line 143 of file ReadMetaHandle.h.

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

◆ retrieve() [2/2]

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

Definition at line 159 of file ReadMetaHandle.h.

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

Member Data Documentation

◆ m_cont

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

Definition at line 59 of file ReadMetaHandle.h.

59{nullptr};

◆ m_ent

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

Definition at line 60 of file ReadMetaHandle.h.

60{nullptr};

◆ m_hkey

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

Definition at line 62 of file ReadMetaHandle.h.

◆ m_sid

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

Definition at line 58 of file ReadMetaHandle.h.


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