00001 00030 #ifndef BDPIPELINE_H 00031 #define BDPIPELINE_H 00032 00033 class RawBeamMonBlock; 00034 class RawBeamMonHeaderBlock; 00035 00036 class BDProcessor; 00037 00038 class MomNavigator; 00039 00040 #include <vector> 00041 00042 class BDPipeline { 00043 public: 00044 00045 BDPipeline(); 00046 ~BDPipeline(); 00047 00049 typedef std::vector<BDProcessor*> ProcessPipeline; 00050 00054 ProcessPipeline& GetProcessPipeline(); 00055 00057 void SetSpill(const RawBeamMonHeaderBlock& rbmhb, 00058 const RawBeamMonBlock& rbmb); 00059 00061 template <class ProcessorType> ProcessorType* GetProcessor(); 00062 00064 const RawBeamMonHeaderBlock* GetHeaderBlock() const; 00065 00067 const RawBeamMonBlock* GetPayloadBlock() const; 00068 00069 private: 00070 00071 ProcessPipeline fPipe; 00072 const RawBeamMonBlock* fPayloadBlock; 00073 const RawBeamMonHeaderBlock* fHeaderBlock; 00074 }; 00075 00076 template <class ProcessorType> 00077 ProcessorType* BDPipeline::GetProcessor() 00078 { 00079 for (size_t ind=0; ind<fPipe.size(); ++ind) { 00080 ProcessorType* p = dynamic_cast<ProcessorType*>(fPipe[ind]); 00081 if (p) return p; 00082 } 00083 return 0; 00084 } 00085 #endif // BDPIPELINE_H 00086
1.3.9.1