00001 // $Id: IDataStreamTool.h,v 1.2 2007/01/12 17:32:31 hmd Exp $ 00002 #ifndef GAUDIKERNEL_IDATASTREAMTOOL_H 00003 #define GAUDIKERNEL_IDATASTREAMTOOL_H 1 00004 00005 // Include files 00006 // from STL 00007 #include <string> 00008 00009 // from Gaudi 00010 #include "GaudiKernel/IAlgTool.h" 00011 00012 class IEvtSelector; 00013 class EventSelectorDataStream; 00014 00015 static const InterfaceID IID_IDataStreamTool ( "IDataStreamTool", 1, 0 ); 00016 00025 class IDataStreamTool : virtual public IAlgTool { 00026 public: 00027 00028 typedef std::vector<std::string> StreamSpecs; 00029 typedef long size_type; 00030 00031 // Return the interface ID 00032 static const InterfaceID& interfaceID() { return IID_IDataStreamTool; } 00033 00034 virtual StatusCode initializeStream( EventSelectorDataStream* ) = 0; 00035 00036 virtual StatusCode finalizeStream( EventSelectorDataStream* ) = 0; 00037 00038 virtual StatusCode getNextStream( const EventSelectorDataStream* &, size_type & ) = 0; 00039 00040 virtual StatusCode getPreviousStream( const EventSelectorDataStream* &, size_type & ) = 0; 00041 00042 virtual StatusCode addStream(const std::string &) = 0; 00043 00044 virtual StatusCode addStreams(const StreamSpecs &) = 0; 00045 00046 virtual StatusCode eraseStream( const std::string& ) = 0; 00047 00048 virtual EventSelectorDataStream* getStream( size_type ) = 0; 00049 00050 virtual EventSelectorDataStream* getStream( const std::string& ) = 0; 00051 00052 virtual EventSelectorDataStream* lastStream() = 0; 00053 00054 virtual size_type size() = 0; 00055 00056 virtual StatusCode clear() = 0; 00057 00058 protected: 00059 00060 virtual StatusCode createSelector(const std::string& , const std::string& , 00061 IEvtSelector*&) = 0; 00062 00063 virtual StatusCode createStream(const std::string&, const std::string&, 00064 EventSelectorDataStream*& ) = 0; 00065 00066 }; 00067 #endif // GAUDIKERNEL_IDATASTREAMTOOL_H