ATLAS Offline Software
Loading...
Searching...
No Matches
ByteStreamMetadataTool Class Reference

This class provides the MetaDataTool for ByteStreamMetadata objects. More...

#include <ByteStreamMetadataTool.h>

Inheritance diagram for ByteStreamMetadataTool:
Collaboration diagram for ByteStreamMetadataTool:

Public Member Functions

 ByteStreamMetadataTool (const std::string &type, const std::string &name, const IInterface *parent)
 Standard Service Constructor.
virtual ~ByteStreamMetadataTool ()
 Destructor.
virtual StatusCode initialize () override
 Gaudi Service Interface method implementations:
virtual StatusCode beginInputFile (const SG::SourceID &) override
 Incident service handle listening for BeginInputFile and EndInputFile.
virtual StatusCode metaDataStop () override
virtual StatusCode endInputFile (const SG::SourceID &) override

Private Member Functions

std::set< std::string > keysFromInput () const

Private Attributes

ServiceHandle< StoreGateSvc > m_metadataStore
ServiceHandle< StoreGateSvc > m_inputStore

Detailed Description

This class provides the MetaDataTool for ByteStreamMetadata objects.

Definition at line 28 of file ByteStreamMetadataTool.h.

Constructor & Destructor Documentation

◆ ByteStreamMetadataTool()

ByteStreamMetadataTool::ByteStreamMetadataTool ( const std::string & type,
const std::string & name,
const IInterface * parent )

Standard Service Constructor.

Definition at line 17 of file ByteStreamMetadataTool.cxx.

21 : base_class(type, name, parent)
22 , m_metadataStore("StoreGateSvc/MetaDataStore", name)
23 , m_inputStore ("StoreGateSvc/InputMetaDataStore", name)
24{
25}
ServiceHandle< StoreGateSvc > m_inputStore
ServiceHandle< StoreGateSvc > m_metadataStore

◆ ~ByteStreamMetadataTool()

ByteStreamMetadataTool::~ByteStreamMetadataTool ( )
virtual

Destructor.

Definition at line 29 of file ByteStreamMetadataTool.cxx.

30{}

Member Function Documentation

◆ beginInputFile()

StatusCode ByteStreamMetadataTool::beginInputFile ( const SG::SourceID & )
overridevirtual

Incident service handle listening for BeginInputFile and EndInputFile.

Definition at line 48 of file ByteStreamMetadataTool.cxx.

49{
50 std::set<std::string> keys = keysFromInput();
51
52 std::vector<std::unique_ptr<ByteStreamMetadata> > copy;
53 std::set<std::string> transGuids;
54
55
56 for(const auto& key : keys) {
57 ATH_MSG_DEBUG("Processing Input ByteStreamMetadata, key = " << key);
58 copy.clear();
59
60 if(m_inputStore->contains<ByteStreamMetadata>(key)) {
61 const ByteStreamMetadata* obj = nullptr;
62 ATH_CHECK(m_inputStore->retrieve(obj, key));
63 copy.push_back(std::make_unique<ByteStreamMetadata>(*obj));
64 }
65
66 if(m_inputStore->contains<ByteStreamMetadataContainer>(key)) {
67 const ByteStreamMetadataContainer* obj = nullptr;
68 ATH_CHECK(m_inputStore->retrieve(obj, key));
69 for(const ByteStreamMetadata* md : *obj)
70 copy.push_back(std::make_unique<ByteStreamMetadata>(*md));
71 }
72
73
74 if(!copy.empty()) {
75
76 transGuids.clear();
77 // Check for existing container
78 ByteStreamMetadataContainer* bsmdc = nullptr;
79
80 if (m_metadataStore->contains<ByteStreamMetadataContainer>(key)) {
81
82 ATH_MSG_DEBUG("Pre-existing ByteStreamMetadataContainer found");
83 ATH_CHECK(m_metadataStore->retrieve(bsmdc, key));
84
85 for (const auto bsmd : *bsmdc)
86 transGuids.insert(bsmd->getGuid());
87
88 } else {
89
91 ATH_CHECK(m_metadataStore->record(bsmdc, key));
92
93 }
94
95 for(auto& pBSMD : copy) {
96 // Only insert new metadata records (with GUID not yet in container)
97 if(transGuids.insert(pBSMD->getGuid()).second)
98 bsmdc->push_back(std::move(pBSMD));
99 }
100 }
101 }
102
103 return StatusCode::SUCCESS;
104}
#define ATH_CHECK
Evaluate an expression and check for errors.
#define ATH_MSG_DEBUG(x,...)
ByteStreamMetadataContainer
std::set< std::string > keysFromInput() const
bool copy
Definition calibdata.py:26

◆ endInputFile()

StatusCode ByteStreamMetadataTool::endInputFile ( const SG::SourceID & )
overridevirtual

Definition at line 128 of file ByteStreamMetadataTool.cxx.

129{
130 return StatusCode::SUCCESS;
131}

◆ initialize()

StatusCode ByteStreamMetadataTool::initialize ( )
overridevirtual

Gaudi Service Interface method implementations:

Definition at line 35 of file ByteStreamMetadataTool.cxx.

36{
37 ATH_MSG_INFO("Initializing");
38
39 ATH_CHECK(m_metadataStore.retrieve());
40 ATH_CHECK(m_inputStore.retrieve());
41
42 return StatusCode::SUCCESS;
43}
#define ATH_MSG_INFO(x,...)

◆ keysFromInput()

std::set< std::string > ByteStreamMetadataTool::keysFromInput ( ) const
inlineprivate

Definition at line 111 of file ByteStreamMetadataTool.cxx.

112{
113 std::vector<std::string> vKeys;
114 std::set<std::string> keys;
115
116 m_inputStore->keys<ByteStreamMetadata>(vKeys);
117 keys.insert(vKeys.begin(), vKeys.end());
118
120 keys.insert(vKeys.begin(), vKeys.end());
121
122 return keys;
123}

◆ metaDataStop()

StatusCode ByteStreamMetadataTool::metaDataStop ( )
overridevirtual

Definition at line 135 of file ByteStreamMetadataTool.cxx.

136{
137 return StatusCode::SUCCESS;
138}

Member Data Documentation

◆ m_inputStore

ServiceHandle<StoreGateSvc> ByteStreamMetadataTool::m_inputStore
private

Definition at line 49 of file ByteStreamMetadataTool.h.

◆ m_metadataStore

ServiceHandle<StoreGateSvc> ByteStreamMetadataTool::m_metadataStore
private

Definition at line 48 of file ByteStreamMetadataTool.h.


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