57 return module().shouldWeCloseFile();
78 &processBlockPrincipal,
84 std::exception_ptr ex;
95 mod.doWriteProcessBlock(processBlockPrincipal, &mcc);
97 ex = std::current_exception();
104 template <
typename T>
123 mergeableRunProductMetadata,
125 std::exception_ptr ex;
136 mod.doWriteRun(rp, &mcc, mergeableRunProductMetadata);
138 ex = std::current_exception();
145 template <
typename T>
158 std::exception_ptr ex;
166 activityRegistry->preModuleWriteLumiSignal_(globalContext, mcc);
170 mod.doWriteLuminosityBlock(lbp, &mcc);
172 ex = std::current_exception();
179 template <
typename T>
181 return module().wantAllEvents();
184 template <
typename T>
186 return module().limitReached();
189 template <
typename T>
194 template <
typename T>
196 return module().keptProducts();
199 template <
typename T>
203 module().selectProducts(preg, helper, processBlockHelper);
206 template <
typename T>
209 bool anyProductProduced) {
210 module().setEventSelectionInfo(outputModulePathPositions, anyProductProduced);
213 template <
typename T>
215 return module().description();
220 return std::unique_ptr<edm::OutputModuleCommunicator>{};
223 return std::make_unique<OutputModuleCommunicatorT<edm::global::OutputModuleBase>>(iMod);
226 return std::make_unique<OutputModuleCommunicatorT<edm::one::OutputModuleBase>>(iMod);
229 return std::make_unique<OutputModuleCommunicatorT<edm::limited::OutputModuleBase>>(iMod);
235 template class OutputModuleCommunicatorT<one::OutputModuleBase>;
236 template class OutputModuleCommunicatorT<global::OutputModuleBase>;
237 template class OutputModuleCommunicatorT<limited::OutputModuleBase>;
RunPrincipal const & runPrincipal() const
void selectProducts(edm::ProductRegistry const &preg, ThinnedAssociationsHelper const &, ProcessBlockHelperBase const &) override
bool wantAllEvents() const override
edm::SelectedProductsForBranchType const & keptProducts() const override
SharedResourcesAcquirer & sharedResourcesAcquirer()
std::unique_ptr< T, F > make_sentry(T *iObject, F iFunc)
NOTE: if iObject is null, then iFunc will not be called.
Timestamp const & beginTime() const
static Timestamp invalidTimestamp()
PostModuleWriteProcessBlock postModuleWriteProcessBlockSignal_
void push(tbb::task_group &iGroup, T &&iAction)
asynchronously pushes functor iAction into queue
std::array< SelectedProducts, NumBranchTypes > SelectedProductsForBranchType
PostModuleWriteLumi postModuleWriteLumiSignal_
void configure(edm::OutputModuleDescription const &desc) override
LuminosityBlockIndex index() const
ServiceToken presentToken() const
static RunIndex invalidRunIndex()
void writeRunAsync(WaitingTaskHolder iTask, edm::RunPrincipal const &rp, ProcessContext const *, ActivityRegistry *, MergeableRunProductMetadata const *) override
void doneWaiting(std::exception_ptr iExcept)
void push(tbb::task_group &iGroup, T &&iAction)
asynchronously pushes functor iAction into queue
bool limitReached() const override
static ServiceRegistry & instance()
Timestamp const & endTime() const
std::unique_ptr< edm::OutputModuleCommunicator > createCommunicatorIfNeeded(void *)
void closeFile() override
PostModuleWriteRun postModuleWriteRunSignal_
static LuminosityBlockIndex invalidLuminosityBlockIndex()
void writeProcessBlockAsync(WaitingTaskHolder iTask, ProcessBlockPrincipal const &, ProcessContext const *, ActivityRegistry *) override
SerialTaskQueueChain & serialQueueChain() const
LimitedTaskQueue & queue()
void writeLumiAsync(WaitingTaskHolder iTask, edm::LuminosityBlockPrincipal const &lbp, ProcessContext const *, ActivityRegistry *) override
void setEventSelectionInfo(std::map< std::string, std::vector< std::pair< std::string, int > > > const &outputModulePathPositions, bool anyProductProduced) override
ModuleDescription const & description() const override
PreModuleWriteRun preModuleWriteRunSignal_
FunctorTask< F > * make_functor_task(F f)
tbb::task_group * group() const noexcept
PreModuleWriteProcessBlock preModuleWriteProcessBlockSignal_
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
LuminosityBlockID id() const