ATLAS Offline Software
Loading...
Searching...
No Matches
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.
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

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) {}
ServiceHandle< IClassIDSvc > m_clidSvc

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
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}
#define ATH_CHECK
Evaluate an expression and check for errors.
#define ATH_MSG_FATAL(x)
#define ATH_MSG_INFO(x)
@ UNKNOWN
Definition StoreID.h: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();
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 {
49 SG::TransientAddress* tad = new SG::TransientAddress(classid, nm);
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}
#define ATH_MSG_WARNING(x)
#define ATH_MSG_DEBUG(x)
uint32_t CLID
The Class ID type.
Gaudi::Property< std::vector< std::string > > m_typeNames
std::map< unsigned int, std::set< std::string > > m_clidKey

◆ 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}
CLID clID() const
Retrieve string key:
const std::string & name() const
Get the primary (hashed) SG key.
void setAddress(CxxUtils::RefCountedPtr< IOpaqueAddress > pAddress)
Retrieve primary clid.
bool add(const std::string &hname, TKey *tobj)
Definition fastadd.cxx:55

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.

48{this, "StoreID", StoreID::EVENT_STORE, "Store ID"};
@ EVENT_STORE
Definition StoreID.h:26

◆ 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.

41 {this, "TypeNames", {},
42 "Type and Name of objects to create the address for", "OrderedSet<std::string>"};

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