File indexing completed on 2024-05-11 03:34:11
0001 #ifndef FWCore_Framework_one_OutputModule_h
0002 #define FWCore_Framework_one_OutputModule_h
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024 #include "FWCore/Framework/interface/one/outputmoduleAbilityToImplementor.h"
0025
0026
0027 namespace edm {
0028 namespace one {
0029 template <typename... T>
0030 class OutputModule : public virtual OutputModuleBase, public outputmodule::AbilityToImplementor<T>::Type... {
0031 public:
0032 OutputModule(edm::ParameterSet const& iPSet)
0033 : OutputModuleBase(iPSet), outputmodule::AbilityToImplementor<T>::Type(iPSet)... {}
0034 OutputModule(const OutputModule&) = delete;
0035 const OutputModule& operator=(const OutputModule&) = delete;
0036
0037
0038
0039
0040
0041 #ifdef __INTEL_COMPILER
0042 virtual ~OutputModule() = default;
0043 #endif
0044
0045
0046 bool wantsProcessBlocks() const noexcept final { return WantsProcessBlockTransitions<T...>::value; }
0047 bool wantsInputProcessBlocks() const noexcept final { return WantsInputProcessBlockTransitions<T...>::value; }
0048 bool wantsGlobalRuns() const noexcept final { return WantsGlobalRunTransitions<T...>::value; }
0049 bool wantsGlobalLuminosityBlocks() const noexcept final {
0050 return WantsGlobalLuminosityBlockTransitions<T...>::value;
0051 }
0052
0053 SerialTaskQueue* globalRunsQueue() final { return globalRunsQueue_.queue(); }
0054 SerialTaskQueue* globalLuminosityBlocksQueue() final { return globalLuminosityBlocksQueue_.queue(); }
0055
0056
0057
0058
0059
0060 private:
0061
0062 impl::OptionalSerialTaskQueueHolder<WantsSerialGlobalRunTransitions<T...>::value> globalRunsQueue_;
0063 impl::OptionalSerialTaskQueueHolder<WantsSerialGlobalLuminosityBlockTransitions<T...>::value>
0064 globalLuminosityBlocksQueue_;
0065 };
0066 }
0067 }
0068
0069 #endif