ATLAS Offline Software
Public Member Functions | Private Attributes | List of all members
ByteStreamAddressProviderSvc Class Reference

A concrete IAddressProvider. More...

#include <ByteStreamAddressProviderSvc.h>

Inheritance diagram for ByteStreamAddressProviderSvc:
Collaboration diagram for ByteStreamAddressProviderSvc:

Public Member Functions

 ByteStreamAddressProviderSvc (const std::string &name, ISvcLocator *pSvcLocator)
 Standard constructor. More...
 
virtual StatusCode initialize () override
 
virtual StatusCode preLoadAddresses (StoreID::type id, tadList &tlist) override
 
virtual StatusCode updateAddress (StoreID::type id, SG::TransientAddress *tad, const EventContext &ctx) override
 update an existing transient Address More...
 

Private Attributes

Gaudi::Property< std::vector< std::string > > m_typeNames
 
ServiceHandle< IClassIDSvc > m_clidSvc
 
std::map< unsigned int, std::set< std::string > > m_clidKey
 
Gaudi::Property< int > m_storeID {this, "StoreID", StoreID::EVENT_STORE, "Store ID"}
 

Detailed Description

A concrete IAddressProvider.

Definition at line 22 of file ByteStreamAddressProviderSvc.h.

Constructor & Destructor Documentation

◆ ByteStreamAddressProviderSvc()

ByteStreamAddressProviderSvc::ByteStreamAddressProviderSvc ( const std::string &  name,
ISvcLocator *  pSvcLocator 
)

Standard constructor.

Definition at line 17 of file ByteStreamAddressProviderSvc.cxx.

18  : base_class(name, pSvcLocator), m_clidSvc("ClassIDSvc", name) {}

Member Function Documentation

◆ initialize()

StatusCode ByteStreamAddressProviderSvc::initialize ( )
overridevirtual

Definition at line 20 of file ByteStreamAddressProviderSvc.cxx.

20  {
21  ATH_MSG_INFO("Initializing");
22 
23  // Retrieve ClassIDSvc
24  ATH_CHECK( m_clidSvc.retrieve() );
25 
26  if (m_storeID < 0 || m_storeID > StoreID::UNKNOWN) {
27  ATH_MSG_FATAL("Invalid StoreID " << m_storeID);
28  return StatusCode::FAILURE;
29  }
30  ATH_MSG_INFO("-- Will fill Store with id = " << m_storeID.value());
31  return StatusCode::SUCCESS;
32 }

◆ preLoadAddresses()

StatusCode ByteStreamAddressProviderSvc::preLoadAddresses ( StoreID::type  id,
tadList &  tlist 
)
overridevirtual

Definition at line 34 of file ByteStreamAddressProviderSvc.cxx.

34  {
35  ATH_MSG_DEBUG("in preLoadAddress");
36  if (id != m_storeID) {
37  ATH_MSG_DEBUG("StoreID = " << id << " does not match required id (" << m_storeID << ") skip");
38  return StatusCode::SUCCESS;
39  }
40 
41  for (const std::string& typeName : m_typeNames) {
42  Gaudi::Utils::TypeNameString item(typeName);
43  const std::string& t = item.type();
44  const std::string& nm = item.name();
45  CLID classid;
46  if (!m_clidSvc->getIDOfTypeName(t, classid).isSuccess()) {
47  ATH_MSG_WARNING("Cannot create TAD for (type, name)" << " no CLID for " << t << " " << nm);
48  } else {
50  tlist.push_back(tad);
51  ATH_MSG_DEBUG("Created TAD for (type, clid, name)" << t << " " << classid << " " << nm);
52  // save the clid and key.
53  m_clidKey[classid].insert(nm);
54  }
55  }
56  return StatusCode::SUCCESS;
57 }

◆ updateAddress()

StatusCode ByteStreamAddressProviderSvc::updateAddress ( StoreID::type  id,
SG::TransientAddress tad,
const EventContext &  ctx 
)
overridevirtual

update an existing transient Address

Definition at line 59 of file ByteStreamAddressProviderSvc.cxx.

61  {
62  if (id != m_storeID) {
63  return StatusCode::FAILURE;
64  }
65  CLID clid = tad->clID();
66  std::string nm = tad->name();
67  auto it = m_clidKey.find(clid);
68  if (it == m_clidKey.end() || it->second.count(nm) == 0) {
69  return StatusCode::FAILURE;
70  }
71  ATH_MSG_DEBUG("Creating address for " << clid << " " << nm);
72  ByteStreamAddress* add = new ByteStreamAddress(clid, nm, "");
73  add->setEventContext(ctx);
74  tad->setAddress(add);
75  return StatusCode::SUCCESS;
76 }

Member Data Documentation

◆ m_clidKey

std::map<unsigned int, std::set<std::string> > ByteStreamAddressProviderSvc::m_clidKey
private

Definition at line 46 of file ByteStreamAddressProviderSvc.h.

◆ m_clidSvc

ServiceHandle<IClassIDSvc> ByteStreamAddressProviderSvc::m_clidSvc
private

Definition at line 44 of file ByteStreamAddressProviderSvc.h.

◆ m_storeID

Gaudi::Property<int> ByteStreamAddressProviderSvc::m_storeID {this, "StoreID", StoreID::EVENT_STORE, "Store ID"}
private

Definition at line 48 of file ByteStreamAddressProviderSvc.h.

◆ m_typeNames

Gaudi::Property<std::vector<std::string> > ByteStreamAddressProviderSvc::m_typeNames
private
Initial value:
{this, "TypeNames", {},
"Type and Name of objects to create the address for", "OrderedSet<std::string>"}

Definition at line 41 of file ByteStreamAddressProviderSvc.h.


The documentation for this class was generated from the following files:
ByteStreamAddressProviderSvc::m_storeID
Gaudi::Property< int > m_storeID
Definition: ByteStreamAddressProviderSvc.h:48
ATH_MSG_FATAL
#define ATH_MSG_FATAL(x)
Definition: AthMsgStreamMacros.h:34
ATH_MSG_INFO
#define ATH_MSG_INFO(x)
Definition: AthMsgStreamMacros.h:31
skel.it
it
Definition: skel.GENtoEVGEN.py:407
SG::TransientAddress
Definition: TransientAddress.h:34
read_hist_ntuple.t
t
Definition: read_hist_ntuple.py:5
python.DetectStreamerInfoChanges.classid
classid
Definition: DetectStreamerInfoChanges.py:57
SG::TransientAddress::name
const std::string & name() const
Get the primary (hashed) SG key.
Definition: TransientAddress.h:214
PyPoolBrowser.item
item
Definition: PyPoolBrowser.py:129
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
SG::TransientAddress::clID
CLID clID() const
Retrieve string key:
Definition: TransientAddress.h:207
ByteStreamAddress
IOpaqueAddress for ByteStreamCnvSvc, with ROB ids.
Definition: ByteStreamAddress.h:28
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
add
bool add(const std::string &hname, TKey *tobj)
Definition: fastadd.cxx:55
CLID
uint32_t CLID
The Class ID type.
Definition: Event/xAOD/xAODCore/xAODCore/ClassID_traits.h:47
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:240
python.Dumpers.tlist
list tlist
Definition: Dumpers.py:5561
ReadCalibFromCrest.typeName
typeName
Definition: ReadCalibFromCrest.py:439
CalibCoolCompareRT.nm
nm
Definition: CalibCoolCompareRT.py:109
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition: AthMsgStreamMacros.h:32
StoreID::UNKNOWN
@ UNKNOWN
Definition: StoreID.h:32
ByteStreamAddressProviderSvc::m_typeNames
Gaudi::Property< std::vector< std::string > > m_typeNames
Definition: ByteStreamAddressProviderSvc.h:41
SG::TransientAddress::setAddress
void setAddress(CxxUtils::RefCountedPtr< IOpaqueAddress > pAddress)
Retrieve primary clid.
Definition: TransientAddress.cxx:189
ByteStreamAddressProviderSvc::m_clidSvc
ServiceHandle< IClassIDSvc > m_clidSvc
Definition: ByteStreamAddressProviderSvc.h:44
ByteStreamAddressProviderSvc::m_clidKey
std::map< unsigned int, std::set< std::string > > m_clidKey
Definition: ByteStreamAddressProviderSvc.h:46