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 StoreGateSvc* ms = m_hkey.getStore();
94 MetaContBase* cb{nullptr};
95 if(ms->retrieve(cb, m_hkey.key()).isFailure()) {
97 << "can't retrieve " << m_hkey.fullKey()
98 << " via base class" << endmsg;
99 throw std::runtime_error("ReadCondHandle: ptr to CondCont<T> is zero");
100 }
101 else {
102 m_cont = dynamic_cast< MetaCont<T>* > (cb);
103 if(!m_cont) {
104 msg << MSG::ERROR
105 << "can't dcast MetaContBase to " << m_hkey.fullKey()
106 << endmsg;
107 throw std::runtime_error("ReadMetaHandle: ptr to MetaCont<T> is zero");
108 }
109 }
110 }
111 }
#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 117 of file ReadMetaHandle.h.

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

◆ isValid()

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

Definition at line 186 of file ReadMetaHandle.h.

186 {
187
188 return initMetaHandle();
189 }

◆ 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 144 of file ReadMetaHandle.h.

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

◆ retrieve() [2/2]

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

Definition at line 160 of file ReadMetaHandle.h.

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

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: