1 #ifndef GAUDIHIVE_ALGRESOURCEPOOL_H
2 #define GAUDIHIVE_ALGRESOURCEPOOL_H
5 #include "GaudiKernel/IAlgResourcePool.h"
6 #include "GaudiKernel/IAlgManager.h"
7 #include "GaudiKernel/Service.h"
8 #include "GaudiKernel/IAlgorithm.h"
9 #include "GaudiKernel/Algorithm.h"
23 #include "boost/dynamic_bitset.hpp"
24 #include "tbb/concurrent_queue.h"
64 typedef std::list<SmartIF<IAlgorithm> >
ListAlg;
104 #endif // GAUDIHIVE_ALGRESOURCEPOOL_H
ListAlg m_flatUniqueAlgList
The flat list of algorithms w/o clones.
AlgResourcePool(const std::string &name, ISvcLocator *svc)
virtual StatusCode releaseResource(const std::string &name)
Release a certrain resource.
StringArrayProperty m_topAlgNames
The names of the algorithms to be passed to the algorithm manager.
The ISvcLocator is the interface implemented by the Service Factory in the Application Manager to loc...
virtual std::list< IAlgorithm * > getTopAlgList()
std::map< size_t, concurrentQueueIAlgPtr * > m_algqueue_map
std::mutex m_resource_mutex
std::list< SmartIF< IAlgorithm > > ListAlg
virtual StatusCode initialize()
The AlgResourcePool is a concrete implementation of the IAlgResourcePool interface.
state_type m_available_resources
boost::dynamic_bitset state_type
std::map< size_t, size_t > m_n_of_allowed_instances
tbb::concurrent_bounded_queue< IAlgorithm * > concurrentQueueIAlgPtr
std::list< IAlgorithm * > m_flatUniqueAlgPtrList
The flat list of algorithms w/o clones which is returned.
virtual StatusCode acquireResource(const std::string &name)
Acquire a certain resource.
This class is used for returning status codes from appropriate routines.
concurrency::ExecutionFlowGraph * m_EFGraph
OMG yet another hack.
std::list< IAlgorithm * > m_topAlgPtrList
The top list of algorithms.
virtual concurrency::ExecutionFlowGraph * getExecutionFlowGraph() const
The IAlgorithm is the interface implemented by the Algorithm base class.
virtual StatusCode start()
virtual StatusCode endRun()
Base class from which all concrete algorithm classes should be derived.
StatusCode decodeTopAlgs()
Decode the top alg list.
Base class used to extend a class implementing other interfaces.
virtual std::list< IAlgorithm * > getFlatAlgList()
StatusCode flattenSequencer(Algorithm *sequencer, ListAlg &alglist, const std::string &parentName, unsigned int recursionDepth=0)
Recursively flatten an algList.
std::map< size_t, state_type > m_resource_requirements
virtual StatusCode releaseAlgorithm(const std::string &name, IAlgorithm *&algo)
Release a certain algorithm.
ListAlg m_topAlgList
The list of top algorithms.
virtual StatusCode stop()
std::map< std::string, unsigned int > m_resource_indices
virtual StatusCode beginRun()
std::map< size_t, unsigned int > m_n_of_created_instances
ListAlg m_algList
The list of all algorithms created withing the Pool which are not top.
virtual StatusCode acquireAlgorithm(const std::string &name, IAlgorithm *&algo, bool blocking=false)
Acquire a certain algorithm using its name.