Go to the documentation of this file.
33 using extends::extends;
47 this,
"FileAccessTools", { {
"FileReadTool" } },
"List of tools implementing the IFileAccess interface." };
49 "URL prefix to use if the prefix is not present." };
71 m_toolSvc = serviceLocator()->service(
"ToolSvc" );
73 error() <<
"Cannot locate ToolSvc" <<
endmsg;
78 for (
const auto& i : m_urlHandlersNames ) {
82 error() <<
"Cannot get tool " << i <<
endmsg;
85 m_acquiredTools.push_back(
tool );
88 error() << i <<
" does not implement IFileAccess" <<
endmsg;
94 for (
const auto& prot : hndlr->protocols() ) m_urlHandlers[prot].emplace_back( hndlr.get() );
98 if ( m_urlHandlers.find( m_fallBackProtocol ) == m_urlHandlers.end() ) {
99 error() <<
"No handler specified for fallback protocol prefix " << m_fallBackProtocol.value() <<
endmsg;
125 auto pos = url.
find(
"://" );
127 if ( url.npos == pos ) {
142 for (
auto hndlr : handlers->second ) {
143 out = hndlr->open( url );
155 [](
const auto& pair ) { return pair.first; } );
StatusCode initialize() override
iterator find(const key_type &key)
Gaudi::Property< std::string > m_fallBackProtocol
std::unique_ptr< std::istream > open(std::string const &url) override
void reset(TYPE *ptr=nullptr)
Set the internal pointer to the passed one disposing of the old one.
T back_inserter(T... args)
const std::vector< std::string > & protocols() const override
StatusCode finalize() override
StatusCode finalize() override
Finalize Service.
Gaudi::Property< std::vector< std::string > > m_urlHandlersNames
std::vector< IAlgTool * > m_acquiredTools
List of acquired tools (needed to release them).
std::vector< std::string > m_protocols
Protocols registered.
GaudiUtils::HashMap< std::string, std::vector< IFileAccess * > > m_urlHandlers
Map of the tools handling the known protocols.
static const InterfaceID & interfaceID()
Return an instance of InterfaceID identifying the interface.
SmartIF< IToolSvc > m_toolSvc
Handle to the tool service.
MsgStream & endmsg(MsgStream &s)
MsgStream Modifier: endmsg. Calls the output method of the MsgStream.
Base class used to extend a class implementing other interfaces.
StatusCode initialize() override
Initialize Service.
#define DECLARE_COMPONENT(type)
constexpr static const auto FAILURE
Implementation of property with value of concrete type.