57 return module().shouldWeCloseFile();
78 &processBlockPrincipal,
84 std::exception_ptr ex;
91 activityRegistry->preModuleWriteProcessBlockSignal_(globalContext, mcc);
95 mod.doWriteProcessBlock(processBlockPrincipal, &mcc);
97 ex = std::current_exception();
99 iTask.doneWaiting(ex);
104 template <
typename T>
124 mergeableRunProductMetadata,
126 std::exception_ptr ex;
133 activityRegistry->preModuleWriteRunSignal_(globalContext, mcc);
137 mod.doWriteRun(rp, &mcc, mergeableRunProductMetadata);
139 ex = std::current_exception();
141 iTask.doneWaiting(ex);
146 template <
typename T>
154 lbp.runPrincipal().index(),
159 std::exception_ptr ex;
167 activityRegistry->preModuleWriteLumiSignal_(globalContext, mcc);
171 mod.doWriteLuminosityBlock(lbp, &mcc);
173 ex = std::current_exception();
175 iTask.doneWaiting(ex);
180 template <
typename T>
182 return module().wantAllEvents();
185 template <
typename T>
187 return module().limitReached();
190 template <
typename T>
195 template <
typename T>
197 return module().keptProducts();
200 template <
typename T>
204 module().selectProducts(preg,
helper, processBlockHelper);
207 template <
typename T>
210 bool anyProductProduced) {
211 module().setEventSelectionInfo(outputModulePathPositions, anyProductProduced);
214 template <
typename T>
216 return module().description();
221 return std::unique_ptr<edm::OutputModuleCommunicator>{};
224 return std::make_unique<OutputModuleCommunicatorT<edm::global::OutputModuleBase>>(iMod);
227 return std::make_unique<OutputModuleCommunicatorT<edm::one::OutputModuleBase>>(iMod);
230 return std::make_unique<OutputModuleCommunicatorT<edm::limited::OutputModuleBase>>(iMod);
236 template class OutputModuleCommunicatorT<one::OutputModuleBase>;
237 template class OutputModuleCommunicatorT<global::OutputModuleBase>;
238 template class OutputModuleCommunicatorT<limited::OutputModuleBase>;
void selectProducts(edm::ProductRegistry const &preg, ThinnedAssociationsHelper const &, ProcessBlockHelperBase const &) override
bool wantAllEvents() const override
void push(oneapi::tbb::task_group &iGroup, T &&iAction)
asynchronously pushes functor iAction into queue
SharedResourcesAcquirer & sharedResourcesAcquirer()
std::unique_ptr< T, F > make_sentry(T *iObject, F iFunc)
NOTE: if iObject is null, then iFunc will not be called.
void writeLumiAsync(WaitingTaskHolder iTask, edm::LuminosityBlockPrincipal const &lbp, ProcessContext const *, ActivityRegistry *) noexcept override
static Timestamp invalidTimestamp()
ModuleDescription const & description() const override
PostModuleWriteProcessBlock postModuleWriteProcessBlockSignal_
std::array< SelectedProducts, NumBranchTypes > SelectedProductsForBranchType
PostModuleWriteLumi postModuleWriteLumiSignal_
void configure(edm::OutputModuleDescription const &desc) override
void writeRunAsync(WaitingTaskHolder iTask, edm::RunPrincipal const &rp, ProcessContext const *, ActivityRegistry *, MergeableRunProductMetadata const *) noexcept override
static RunIndex invalidRunIndex()
edm::SelectedProductsForBranchType const & keptProducts() const override
SerialTaskQueueChain & serialQueueChain() const
bool limitReached() const override
static ServiceRegistry & instance()
std::unique_ptr< edm::OutputModuleCommunicator > createCommunicatorIfNeeded(void *)
void closeFile() override
PostModuleWriteRun postModuleWriteRunSignal_
static LuminosityBlockIndex invalidLuminosityBlockIndex()
LimitedTaskQueue & queue()
void setEventSelectionInfo(std::map< std::string, std::vector< std::pair< std::string, int > > > const &outputModulePathPositions, bool anyProductProduced) override
FunctorTask< F > * make_functor_task(F f)
void writeProcessBlockAsync(WaitingTaskHolder iTask, ProcessBlockPrincipal const &, ProcessContext const *, ActivityRegistry *) noexcept override
static uInt32 F(BLOWFISH_CTX *ctx, uInt32 x)
bool shouldWeCloseFile() const override
T mod(const T &a, const T &b)
void openFile(edm::FileBlock const &fb) override
ServiceToken presentToken() const
void push(oneapi::tbb::task_group &iGroup, T &&iAction)
asynchronously pushes functor iAction into queue