00001 // $Id: DataStreamTool.h,v 1.3 2007/01/15 16:48:21 hmd Exp $ 00002 #ifndef GAUDIKERNEL_DATASTREAMTOOL_H 00003 #define GAUDIKERNEL_DATASTREAMTOOL_H 1 00004 00005 // Include files 00006 00007 #include <vector> 00008 00009 // from Gaudi 00010 #include "GaudiKernel/Service.h" 00011 #include "GaudiKernel/IEvtSelector.h" 00012 #include "GaudiKernel/IDataStreamTool.h" 00013 #include "GaudiKernel/AlgTool.h" 00014 00015 class IIncidentSvc; 00016 00029 class DataStreamTool : public AlgTool, virtual public IDataStreamTool { 00030 public: 00031 00032 typedef std::vector<EventSelectorDataStream*> Streams; 00033 typedef std::vector<StringProperty> Properties; 00034 00036 DataStreamTool( const std::string& type, 00037 const std::string& name, 00038 const IInterface* parent); 00039 00040 virtual ~DataStreamTool( ); 00041 00042 virtual StatusCode initialize(); 00043 00044 virtual StatusCode addStream(const std::string &); 00045 00046 virtual StatusCode addStreams(const StreamSpecs &); 00047 00048 virtual StatusCode eraseStream( const std::string& ); 00049 00050 virtual StatusCode finalize(); 00051 00053 virtual StatusCode initializeStream( EventSelectorDataStream* ); 00054 00056 virtual StatusCode finalizeStream( EventSelectorDataStream* ); 00057 00058 virtual StatusCode getNextStream( const EventSelectorDataStream* &, size_type & ); 00059 00060 virtual StatusCode getPreviousStream( const EventSelectorDataStream* &, size_type & ); 00061 00062 virtual Streams& getStreams() { return m_streams; }; 00063 00064 virtual EventSelectorDataStream* lastStream(); 00065 00066 virtual Streams::iterator beginOfStreams() {return m_streams.begin(); }; 00067 00068 virtual Streams::iterator endOfStreams() {return m_streams.end(); }; 00069 00071 virtual EventSelectorDataStream* getStream( const std::string& ); 00072 00073 virtual EventSelectorDataStream* getStream( size_type ); 00074 00075 virtual size_type size() { return m_streams.size(); }; 00076 00077 virtual StatusCode clear(); 00078 00079 protected: 00080 00081 virtual StatusCode createSelector( const std::string& , const std::string& , 00082 IEvtSelector*& ); 00083 00084 virtual StatusCode createStream(const std::string&, const std::string&, 00085 EventSelectorDataStream*& ); 00086 00088 StatusCode connectStream( EventSelectorDataStream *); 00090 StatusCode connectStream( const std::string & ); 00091 00092 size_type m_streamID; 00093 00094 size_type m_streamCount; 00095 00096 Streams m_streams; 00097 00098 StreamSpecs m_streamSpecs; 00099 00101 IIncidentSvc* m_incidentSvc; 00102 00103 bool m_reconfigure; 00104 00105 Streams::iterator getStreamIterator ( const std::string& ); 00106 00107 private: 00108 00109 }; 00110 #endif // GAUDIKERNEL_DATASTREAMTOOL_H