Main Page   Namespace List   Class Hierarchy   Compound List   File List   Namespace Members   Compound Members   File Members  

OutputStream.h

Go to the documentation of this file.
00001 //      ====================================================================
00002 //  OutputStream.h
00003 //      --------------------------------------------------------------------
00004 //
00005 //      Package   : GaudiSvc/PersistencySvc
00006 //
00007 //      Author    : Markus Frank
00008 //
00009 //      ====================================================================
00010 #ifndef GAUDISVC_PERSISTENCYSVC_OUTPUTSTREAM_H
00011 #define GAUDISVC_PERSISTENCYSVC_OUTPUTSTREAM_H
00012 
00013 // STL include files
00014 #include <memory>
00015 #include <vector>
00016 #include <string>
00017 
00018 // Required for inheritance
00019 #include "GaudiKernel/IDataSelector.h"
00020 #include "GaudiKernel/Algorithm.h"
00021 #include "GaudiKernel/Property.h"
00022 // forward declarations
00023 template <class ConcreteAlgorithm> class AlgFactory;
00024 class IDataDirectory;
00025 class IConversionSvc;
00026 class IDataManagerSvc;
00027 class OutputStreamAgent;
00028 class DataStoreItem;
00029 
00034 class OutputStream : public Algorithm     {
00035   friend class AlgFactory<OutputStream>;
00036 public:
00037   typedef std::vector<DataStoreItem*> Items;
00038   typedef std::vector<std::string>    ItemNames;
00039 protected:
00041   bool                     m_doPreLoad;
00043   std::string              m_storeName;
00045   std::string              m_persName;
00047   std::string              m_output;
00049   std::string              m_outputName;
00051   OutputStreamAgent*       m_agent;
00053   IDataProviderSvc*        m_pDataProvider;
00055   IDataManagerSvc*         m_pDataManager;
00057   IConversionSvc*          m_pConversionSvc;
00059   DataStoreItem*           m_currentItem;
00061   ItemNames                m_itemNames;
00063   Items                    m_itemList;
00065   IDataSelector            m_objects;
00067   int                      m_events;
00069   StringArrayProperty      m_acceptNames;
00071   StringArrayProperty      m_requireNames;
00073   StringArrayProperty      m_vetoNames;
00075   std::vector<Algorithm*>* m_acceptAlgs;
00077   std::vector<Algorithm*>* m_requireAlgs;
00079   std::vector<Algorithm*>* m_vetoAlgs;
00080 
00081 protected:
00083         OutputStream(const std::string& name, ISvcLocator* pSvcLocator); 
00085   virtual ~OutputStream();
00087   StatusCode decodeAcceptAlgs( );
00089   void acceptAlgsHandler( Property& theProp );
00091   StatusCode decodeRequireAlgs( );
00093   void requireAlgsHandler( Property& theProp );
00095   StatusCode decodeVetoAlgs( );
00097   void vetoAlgsHandler( Property& theProp );
00099   StatusCode decodeAlgorithms( StringArrayProperty& theNames,
00100                                std::vector<Algorithm*>* theAlgs );
00102   bool isEventAccepted( ) const;
00103 
00104 public:
00106         virtual StatusCode initialize();
00108         virtual StatusCode finalize();
00110         virtual StatusCode execute();
00111   // Connect to proper conversion service
00112   virtual StatusCode connectConversionSvc();
00114   virtual bool collect(IDataDirectory* dir, int level);
00116   void clearItems();
00118   void addItem(const std::string& descriptor);
00120   void clearSelection();
00122   IDataSelector* selectedObjects()    {
00123     return &m_objects;
00124   }
00125 };
00126 
00127 #endif // GAUDISVC_PERSISTENCYSVC_OUTPUTSTREAM_H

Generated at Wed Nov 21 12:22:30 2001 by doxygen1.2.3 written by Dimitri van Heesch, © 1997-2000