Skip to content
Snippets Groups Projects
Commit e19e5471 authored by Adam Edward Barton's avatar Adam Edward Barton
Browse files

Merge branch 'itemListSvc.AthenaKernel-20190211' into 'master'

AthenaKernel+AthenaServices: Clean up IItemListSvc.

See merge request atlas/athena!21036
parents 829fadf2 c44273b8
No related branches found
No related tags found
9 merge requests!58791DataQualityConfigurations: Modify L1Calo config for web display,!46784MuonCondInterface: Enable thread-safety checking.,!46776Updated LArMonitoring config file for WD to match new files produced using MT,!45405updated ART test cron job,!42417Draft: DIRE and VINCIA Base Fragments for Pythia 8.3,!28528Revert 63f845ae,!27054Atr20369 210,!26342Monopole: Handle fractionally charged particles,!21036AthenaKernel+AthenaServices: Clean up IItemListSvc.
///////////////////////// -*- C++ -*- /////////////////////////////
/*
Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
*/
// IItemListSvc.h
......@@ -33,6 +33,7 @@ class IItemListSvc
{
public:
DeclareInterfaceID (IItemListSvc,1,0);
virtual ~IItemListSvc();
......@@ -41,30 +42,26 @@ public:
// non-const
//
// add a stream-item pair to the service listing
virtual StatusCode addStreamItem(std::string stream, std::string itemname) = 0;
virtual StatusCode addStreamItem(const std::string& stream, const std::string& itemname) = 0;
// remove Item
virtual StatusCode removeStreamItem(std::string stream, std::string itemname) = 0;
virtual StatusCode removeStreamItem(const std::string& stream, const std::string& itemname) = 0;
//
// const
//
// check if a stream-item is registered
//virtual bool containsItem(const std::string itemname) const = 0;
virtual bool containsItem(const std::string itemname, const std::string stream="ANY") const = 0;
virtual bool containsItem(const std::string& itemname, const std::string& stream="ANY") const = 0;
// check how many streams contain an item
//virtual long countItemInstances(const std::string itemname) const = 0;
// get the streams for a given item
virtual std::vector<std::string> getStreamsForItem(const std::string itemname) const = 0;
virtual std::vector<std::string> getStreamsForItem(const std::string& itemname) const = 0;
// get the items for a given stream
virtual std::vector<std::string> getItemsForStream(const std::string stream) const = 0;
virtual std::vector<std::string> getItemsForStream(const std::string& stream) const = 0;
// get mutex for streaming itemlist to output
virtual std::mutex& streamMutex();
public:
static const InterfaceID& interfaceID();
private:
std::mutex m_stream_mut;
......@@ -75,14 +72,6 @@ private:
// Inline methods:
///////////////////////////////////////////////////////////////////
inline
const InterfaceID&
IItemListSvc::interfaceID()
{
static const InterfaceID IID_IItemListSvc("IItemListSvc", 1, 0);
return IID_IItemListSvc;
}
inline
std::mutex&
IItemListSvc::streamMutex()
......
///////////////////////// -*- C++ -*- /////////////////////////////
/*
Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
*/
// ItemListSvc.cxx
......@@ -19,7 +19,7 @@
ItemListSvc::ItemListSvc(const std::string& name,
ISvcLocator* pSvcLocator ) :
AthService(name, pSvcLocator),
base_class(name, pSvcLocator),
m_verboseThresh(0.20)
{
declareProperty("VerboseThreshold",m_verboseThresh,"overlaps above this fraction print their items, def=0.2");
......@@ -71,7 +71,7 @@ StatusCode ItemListSvc::finalize()
}
// add item to list for stream
StatusCode ItemListSvc::addStreamItem(const std::string stream, const std::string itemname)
StatusCode ItemListSvc::addStreamItem(const std::string& stream, const std::string& itemname)
{
// Add to stream list
// Check if item is already present
......@@ -93,7 +93,7 @@ StatusCode ItemListSvc::addStreamItem(const std::string stream, const std::strin
}
// remove item from list for stream
StatusCode ItemListSvc::removeStreamItem(const std::string stream, const std::string itemname)
StatusCode ItemListSvc::removeStreamItem(const std::string& stream, const std::string& itemname)
{
std::map<std::string, std::set<std::string> >::iterator it = m_streamItems.find(stream);
if (it == m_streamItems.end()) {
......@@ -108,7 +108,7 @@ StatusCode ItemListSvc::removeStreamItem(const std::string stream, const std::st
}
// simple test to see if item or (stream,item) is already being written
bool ItemListSvc::containsItem(const std::string itemname, const std::string stream) const
bool ItemListSvc::containsItem(const std::string& itemname, const std::string& stream) const
{
bool contains=false;
std::map<std::string, std::set<std::string> >::const_iterator it = m_streamItems.begin();
......@@ -122,7 +122,7 @@ bool ItemListSvc::containsItem(const std::string itemname, const std::string str
}
// This returns all the streams that an item was written to
std::vector<std::string> ItemListSvc::getStreamsForItem(const std::string itemname) const
std::vector<std::string> ItemListSvc::getStreamsForItem(const std::string& itemname) const
{
std::vector<std::string> t;
std::map<std::string, std::set<std::string> >::const_iterator it = m_streamItems.begin();
......@@ -134,26 +134,10 @@ std::vector<std::string> ItemListSvc::getStreamsForItem(const std::string itemna
}
// This returns the items that were output to a certain stream
std::vector<std::string> ItemListSvc::getItemsForStream(const std::string stream) const
std::vector<std::string> ItemListSvc::getItemsForStream(const std::string& stream) const
{
std::vector<std::string> t;
std::map<std::string, std::set<std::string> >::const_iterator it = m_streamItems.find(stream);
if (it != m_streamItems.end()) std::copy(it->second.begin(), it->second.end(),t.begin());
return t;
}
StatusCode
ItemListSvc::queryInterface( const InterfaceID& riid, void** ppvi )
{
// valid placeholder?
if ( nullptr == ppvi ) { return StatusCode::FAILURE ; } // RETURN
if ( IItemListSvc::interfaceID() == riid )
{
*ppvi = static_cast<IItemListSvc*>(this);
addRef(); // NB! : inrement the reference count!
return StatusCode::SUCCESS; // RETURN
}
// Interface is not directly availible: try out a base class
return Service::queryInterface( riid, ppvi );
}
///////////////////////// -*- C++ -*- /////////////////////////////
/*
Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
*/
// ItemListSvc.h
......@@ -51,8 +51,7 @@ namespace item {
};
}
class ItemListSvc : virtual public IItemListSvc,
public AthService
class ItemListSvc : public extends<AthService, IItemListSvc>
{
public:
......@@ -66,30 +65,26 @@ public:
public:
/// Gaudi Service Implementation
StatusCode initialize();
StatusCode initialize() override;
//StatusCode start();
StatusCode finalize();
StatusCode finalize() override;
// Public interface methods
// non-const
//
// add a stream-item pair to the service listing
StatusCode addStreamItem(std::string stream, std::string itemname);
virtual StatusCode addStreamItem(const std::string& stream, const std::string& itemname) override;
// remove Item
StatusCode removeStreamItem(std::string stream, std::string itemname);
virtual StatusCode removeStreamItem(const std::string& stream, const std::string& itemname) override;
//
// const
//
// check if a stream-item is registered
bool containsItem(const std::string itemname, const std::string stream="ANY") const;
virtual bool containsItem(const std::string& itemname, const std::string& stream="ANY") const override;
// get the streams for a given item
std::vector<std::string> getStreamsForItem(const std::string itemname) const;
virtual std::vector<std::string> getStreamsForItem(const std::string& itemname) const override;
// get the items for a given stream
std::vector<std::string> getItemsForStream(const std::string stream) const;
static const InterfaceID& interfaceID();
virtual StatusCode queryInterface( const InterfaceID& riid, void** ppvi );
virtual std::vector<std::string> getItemsForStream(const std::string& stream) const override;
private:
// Map between streams and items
......@@ -102,15 +97,5 @@ private:
};
///////////////////////////////////////////////////////////////////
// Inline methods:
///////////////////////////////////////////////////////////////////
inline const InterfaceID& ItemListSvc::interfaceID()
{
return IItemListSvc::interfaceID();
}
#endif //> !ATHENASERVICES_ITEMLISTSVC_H
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment