/
githubmirror
/
cmssw
Обзор
Документация
Войти
/
githubmirror
/
cmssw
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
IOPool/Streamer/interface/StreamerOutputModule.h
79 строк
3 KB
Chris Jones
Moved code to edm::streamer namespace
02 май 2024, 00:33
02 май 2024, 00:33
bcbcf69
Код
Авторство
О чём код?
#ifndef IOPool_Streamer_StreamerOutputModule_h #define IOPool_Streamer_StreamerOutputModule_h #include "FWCore/ParameterSet/interface/ConfigurationDescriptions.h" #include "FWCore/Utilities/interface/propagate_const.h" #include "IOPool/Streamer/interface/StreamerOutputModuleBase.h" namespace edm::streamer { template <typename Consumer> class StreamerOutputModule : public StreamerOutputModuleBase { /** Consumers are suppose to provide void doOutputHeader(InitMsgBuilder const& init_message) void doOutputEvent(EventMsgBuilder const& msg) void start() void stop() static void fillDescription(ParameterSetDescription&) **/ public: explicit StreamerOutputModule(ParameterSet const& ps); ~StreamerOutputModule() override; static void fillDescriptions(ConfigurationDescriptions& descriptions); private: void start() override; void stop() override; void doOutputHeader(InitMsgBuilder const& init_message) override; void doOutputEvent(EventMsgBuilder const& msg) override; void beginLuminosityBlock(edm::LuminosityBlockForOutput const&) override; void endLuminosityBlock(edm::LuminosityBlockForOutput const&) override; private: edm::propagate_const<std::unique_ptr<Consumer>> c_; }; //end-of-class-def template <typename Consumer> StreamerOutputModule<Consumer>::StreamerOutputModule(ParameterSet const& ps) : edm::one::OutputModuleBase::OutputModuleBase(ps), StreamerOutputModuleBase(ps), c_(new Consumer(ps)) {} template <typename Consumer> StreamerOutputModule<Consumer>::~StreamerOutputModule() {} template <typename Consumer> void StreamerOutputModule<Consumer>::start() { c_->start(); } template <typename Consumer> void StreamerOutputModule<Consumer>::stop() { c_->stop(); } template <typename Consumer> void StreamerOutputModule<Consumer>::doOutputHeader(InitMsgBuilder const& init_message) { c_->doOutputHeader(init_message); } //______________________________________________________________________________ template <typename Consumer> void StreamerOutputModule<Consumer>::doOutputEvent(EventMsgBuilder const& msg) { c_->doOutputEvent(msg); // You can't use msg in StreamerOutputModule after this point } template <typename Consumer> void StreamerOutputModule<Consumer>::beginLuminosityBlock(edm::LuminosityBlockForOutput const&) {} template <typename Consumer> void StreamerOutputModule<Consumer>::endLuminosityBlock(edm::LuminosityBlockForOutput const&) {} template <typename Consumer> void StreamerOutputModule<Consumer>::fillDescriptions(ConfigurationDescriptions& descriptions) { ParameterSetDescription desc; StreamerOutputModuleBase::fillDescription(desc); Consumer::fillDescription(desc); descriptions.add("streamerOutput", desc); } } // namespace edm::streamer #endif