59 vector<IRegistry*> leaves;
62 for (
auto& pReg : leaves ) {
64 if ( !pReg->address() || !pReg->object() )
continue;
65 const string&
id = pReg->identifier();
66 auto j =
m_info.find(
id );
71 j->second.id =
m_info.size();
72 j->second.clid = pReg->object()->clID();
94 log <<
"== BEGIN ============= Access list content:" <<
m_info.size() <<
endmsg;
95 for (
const auto& i :
m_info ) {
97 log <<
"== ITEM == " << right << setw( 4 ) << dec <<
info.id <<
" clid:" << right << setw( 8 ) << hex <<
info.clid
98 <<
" Count:" << right << setw( 6 ) << dec <<
info.count <<
" " << i.first +
":" <<
endmsg;
99 auto c =
m_corr.find( i.first );
100 if ( c !=
m_corr.end() ) {
102 log <<
"== CORRELATIONS:" << ( *c ).second.size() <<
endmsg;
103 for (
const auto& k : c->second ) {
104 if ( k.second > 0 ) {
105 log << dec << k.first <<
":" << k.second <<
" ";
112 if ( cnt > 0 ) log <<
endmsg;
114 auto l =
m_links.find( i.first );
117 log <<
"== LINKS:" << l->second.size() <<
endmsg;
118 for (
const auto& k : l->second ) {
119 if ( k.second > 0 ) {
120 log << dec << k.first <<
":" << k.second <<
" ";
127 if ( cnt > 0 ) log <<
endmsg;
141 auto& evnt =
m_curr[
"/Event"];
142 evnt.count =
explore( root->registry() );
143 evnt.clid = root->clID();
146 for (
const auto& i :
m_info ) {
147 const string& nam = i.first;
149 auto c =
m_corr.find( nam );
150 if ( c ==
m_corr.end() ) {
154 for (
const auto& l :
m_curr ) {
155 const auto&
id = l.second.id;
156 auto k = c->second.find(
id );
157 if ( k == c->second.end() ) k = c->second.emplace(
id, 0 ).first;
162 if ( c ==
m_links.end() ) c =
m_links.emplace( nam, std::map<int, int>{} ).first;
166 if ( !obj )
continue;
169 for (
long l = 0; l < m->size(); ++l ) {
170 auto* lnk = m->link( l );
171 auto il =
m_curr.find( lnk->path() );
173 if ( il ==
m_curr.end() )
continue;
174 if ( !lnk->object() )
continue;
175 const auto&
id = il->second.id;
176 auto k = c->second.find(
id );
177 if ( k == c->second.end() ) k = c->second.emplace(
id, 0 ).first;
unsigned int CLID
Class ID definition.
MsgStream & endmsg(MsgStream &s)
MsgStream Modifier: endmsg. Calls the output method of the MsgStream.
#define DECLARE_COMPONENT(type)
MsgStream & info() const
shortcut for the method msgStream(MSG::INFO)
MsgStream & always() const
shortcut for the method msgStream(MSG::ALWAYS)
SmartIF< IDataProviderSvc > & eventSvc() const
The standard event data service.
Algorithm(std::string name, ISvcLocator *svcloc, std::string version=PACKAGE_VERSION)
Constructor.
The IRegistry represents the entry door to the environment any data object residing in a transient da...
A LinkManager is the object aggregated into a DataObject, which is responsible for the handling of no...
A small class used to access easily (and efficiently) data items residing in data stores.
Small smart pointer class with automatic reference counting for IInterface.
SmartIF< IFace > as() const
return a new SmartIF instance to another interface
This class is used for returning status codes from appropriate routines.
constexpr static const auto SUCCESS
Small algorithm, which traverses the data store and prints a summary of the leafs accessed during the...
SmartIF< IDataManagerSvc > m_mgr
map< string, LeafInfo > SniffInfo
size_t explore(IRegistry *pObj)
StatusCode execute() override
Execute procedure.
StatusCode initialize() override
Initialize.
StatusCode finalize() override
Finalize.
map< string, map< int, int > > Correlations