|
|
Go to the documentation of this file.
34 exception <<
"DataManagingProductResolver::resolveProduct_: The product matching all criteria was already deleted\n"
36 <<
"Looking for module label: " <<
moduleLabel() <<
"\n"
39 <<
"This means there is a configuration error.\n"
40 <<
"The module which is asking for this data must be configured to state that it will read this data.";
45 template <
bool callResolver,
typename FUNC>
50 auto presentStatus =
status();
55 auto failedStatusSetter = [
this](
ProductStatus* iPresentStatus) {
59 *iPresentStatus = this->
status();
70 if (pd->wrapper()->isPresent()) {
95 if (
original->isPresent() != iFrom->isPresent()) {
98 <<
"Was trying to merge objects where one product had been put in the input file and the other had not "
101 <<
"The solution is to drop the branch on input. Or better do not create inconsistent files\n"
102 <<
"that need to be merged in the first place.\n";
106 if (mergeableRunProductMetadata ==
nullptr || desc.
branchType() !=
InRun) {
107 original->mergeProduct(iFrom.get());
112 original->mergeProduct(iFrom.get());
127 }
else if (
original->hasIsProductEqual()) {
128 if (
original->isPresent() && iFrom->isPresent()) {
129 if (!
original->isProductEqual(iFrom.get())) {
132 <<
"ProductResolver::mergeTheProduct\n"
133 <<
"Two run/lumi products for the same run/lumi which should be equal are not\n"
134 <<
"Using the first, ignoring the second\n"
135 <<
"className = " <<
bd.className() <<
"\n"
136 <<
"moduleLabel = " <<
bd.moduleLabel() <<
"\n"
137 <<
"instance = " <<
bd.productInstanceName() <<
"\n"
138 <<
"process = " <<
bd.processName() <<
"\n";
140 }
else if (!
original->isPresent() && iFrom->isPresent()) {
146 edm::LogWarning(
"RunLumiMerging") <<
"ProductResolver::mergeTheProduct\n"
147 <<
"Run/lumi product has neither a mergeProduct nor isProductEqual function\n"
148 <<
"Using the first, ignoring the second in merge\n"
149 <<
"className = " <<
bd.className() <<
"\n"
150 <<
"moduleLabel = " <<
bd.moduleLabel() <<
"\n"
151 <<
"instance = " <<
bd.productInstanceName() <<
"\n"
152 <<
"process = " <<
bd.processName() <<
"\n";
153 if (!
original->isPresent() && iFrom->isPresent()) {
164 return resolveProductImpl<true>([
this, &principal, mcc]() {
182 std::unique_lock<std::recursive_mutex> guard;
183 if (
auto sr =
reader->sharedResources().second) {
184 guard = std::unique_lock<std::recursive_mutex>(*sr);
197 std::unique_lock<std::recursive_mutex> guard;
198 if (
auto sr =
reader->sharedResources().second) {
199 guard = std::unique_lock<std::recursive_mutex>(*sr);
206 if (edp.get() !=
nullptr) {
211 <<
"Mergeable data types written to a Run must have the swap member function defined"
220 <<
"The product branch was dropped in the first run or lumi fragment and present in a later one"
222 <<
"The solution is to drop the branch on input. Or better do not create inconsistent files\n"
223 <<
"that need to be merged in the first place.\n";
230 <<
"The product branch was present in first run or lumi fragment and dropped in a later one"
232 <<
"The solution is to drop the branch on input. Or better do not create inconsistent files\n"
233 <<
"that need to be merged in the first place.\n";
246 bool skipCurrentProcess,
251 bool expected =
false;
255 if (prefetchRequested) {
256 auto workToDo = [
this, mcc, &principal,
token]() {
261 resolveProductImpl<true>([
this, &principal, mcc]() {
262 if (principal.branchType() !=
InEvent) {
265 if (
auto reader = principal.reader()) {
266 std::unique_lock<std::recursive_mutex> guard;
267 if (
auto sr =
reader->sharedResources().second) {
268 guard = std::unique_lock<std::recursive_mutex>(*sr);
284 if (
auto reader = principal.reader()) {
285 if (
auto shared_res =
reader->sharedResources().first) {
286 queue = &(shared_res->serialQueueChain());
290 queue->push(workToDo);
294 tbb::task::spawn(*
t);
300 if (not deleteEarly) {
314 bool skipCurrentProcess,
317 if (!skipCurrentProcess) {
319 return resolveProductImpl<false>([]() {
return; });
326 bool skipCurrentProcess,
330 if (not skipCurrentProcess) {
332 if (not mcc->parent().isAtEndTransition()) {
337 bool expected =
false;
341 if (
worker_ and prefetchRequested) {
347 auto waiting =
make_waiting_task(tbb::task::allocate_root(), [
this](std::exception_ptr
const* iException) {
348 if (
nullptr != iException) {
361 bool expected =
false;
368 if (not deleteEarly) {
386 bool skipCurrentProcess,
389 if (!skipCurrentProcess and
worker_) {
390 return resolveProductImpl<true>([&principal,
this, sra, mcc]() {
392 auto const&
event = static_cast<EventPrincipal const&>(principal);
396 auto workCall = [
this, &
event, &parentContext, mcc]() {
412 std::ostringstream ost;
425 bool skipCurrentProcess,
429 if (skipCurrentProcess) {
433 bool expected =
false;
436 if (prefetchRequested) {
439 auto t =
make_waiting_task(tbb::task::allocate_root(), [
this](std::exception_ptr
const* iPtr) {
444 resolveProductImpl<true>([iPtr]() {
446 std::rethrow_exception(*iPtr);
455 auto const&
event = static_cast<EventPrincipal const&>(principal);
464 if (not deleteEarly) {
512 <<
"It is actually of type " << typeID.className() <<
".\n";
529 auto presentStatus =
status();
600 <<
"AliasProductResolver::putProduct_() not implemented and should never be called.\n"
601 <<
"Contact a Framework developer\n";
607 <<
"AliasProductResolver::putOrMergeProduct_(std::unique_ptr<WrapperBase> edp, MergeableRunProductMetadata "
608 "const*) not implemented and should never be called.\n"
609 <<
"Contact a Framework developer\n";
614 : realProduct_(realProduct), productData_(
std::
move(
bd)), prefetchRequested_(
false) {
624 <<
"SwitchBaseProductResolver::connectTo() not implemented and should never be called.\n"
625 <<
"Contact a Framework developer\n";
633 if (
res.data() ==
nullptr)
649 <<
"SwitchBaseProductResolver::putOrMergeProduct_(std::unique_ptr<WrapperBase> edp, "
650 "MergeableRunProductMetadata const*) not implemented and should never be called.\n"
651 <<
"Contact a Framework developer\n";
666 if (not deleteEarly) {
684 bool skipCurrentProcess,
695 bool skipCurrentProcess,
699 if (skipCurrentProcess) {
707 bool expected =
false;
708 bool doPrefetchRequested =
prefetchRequested().compare_exchange_strong(expected,
true);
711 if (doPrefetchRequested) {
716 auto waiting =
make_waiting_task(tbb::task::allocate_root(), [
this](std::exception_ptr
const* iException) {
717 if (
nullptr != iException) {
732 <<
"This makes no sense for SwitchProducerProductResolver.\nContact a Framework developer";
737 bool expected =
false;
754 if (not deleteEarly) {
760 bool skipCurrentProcess,
768 bool skipCurrentProcess,
772 if (skipCurrentProcess) {
777 bool expected =
false;
778 bool doPrefetchRequested =
prefetchRequested().compare_exchange_strong(expected,
true);
781 if (doPrefetchRequested) {
786 auto waiting =
make_waiting_task(tbb::task::allocate_root(), [
this](std::exception_ptr
const* iException) {
787 if (
nullptr != iException) {
800 <<
"SwitchAliasProductResolver::putProduct() not implemented and should never be called.\n"
801 <<
"Contact a Framework developer\n";
820 <<
"ParentProcessProductResolver::putProduct_() not implemented and should never be called.\n"
821 <<
"Contact a Framework developer\n";
827 <<
"ParentProcessProductResolver::putOrMergeProduct_(std::unique_ptr<WrapperBase> edp, "
828 "MergeableRunProductMetadata const*) not implemented and should never be called.\n"
829 <<
"Contact a Framework developer\n";
849 <<
"ParentProcessProductResolver::throwNullRealProduct RealProduct pointer not set in this context.\n"
850 <<
"Contact a Framework developer\n";
854 std::vector<bool>
const& ambiguous,
856 : matchingHolders_(matchingHolders),
857 ambiguous_(ambiguous),
859 lastSkipCurrentCheckIndex_(lastCheckIndex_.
load()),
860 prefetchRequested_(
false),
861 skippingPrefetchRequested_(
false),
862 madeAtEnd_{madeAtEnd} {
863 assert(ambiguous_.size() == matchingHolders_.size());
868 bool skipCurrentProcess,
872 return productResolver->
resolveProduct(principal, skipCurrentProcess, sra, mcc);
876 bool skipCurrentProcess,
881 const unsigned int choiceSize =
ambiguous_.size();
884 if ((not skipCurrentProcess) and (
madeAtEnd_ and mcc)) {
885 skipCurrentProcess = not mcc->parent().isAtEndTransition();
895 return tryResolver(checkCacheIndex, principal, skipCurrentProcess, sra, mcc);
901 for (
unsigned int k : lookupProcessOrder) {
912 updateCacheIndex =
k;
924 bool skipCurrentProcess,
928 bool timeToMakeAtEnd =
true;
930 timeToMakeAtEnd = mcc->parent().isAtEndTransition();
934 if (not skipCurrentProcess and timeToMakeAtEnd) {
936 bool expected =
false;
940 if (prefetchRequested) {
946 bool expected =
false;
956 std::exception_ptr iExceptPtr)
const {
957 if (not iSkipCurrentProcess) {
970 unsigned int iResolverIndex,
974 bool iSkipCurrentProcess,
976 : resolver_(iResolver),
977 principal_(iPrincipal),
980 serviceToken_(iToken),
981 index_(iResolverIndex),
982 skipCurrentProcess_(iSkipCurrentProcess) {}
985 auto exceptPtr = exceptionPtr();
987 resolver_->prefetchFailed(index_, *principal_, skipCurrentProcess_, *exceptPtr);
989 if (not resolver_->dataValidFromResolver(index_, *principal_, skipCurrentProcess_)) {
990 resolver_->tryPrefetchResolverAsync(
991 index_ + 1, *principal_, skipCurrentProcess_, sra_, mcc_, serviceToken_);
998 NoProcessProductResolver
const* resolver_;
999 Principal
const* principal_;
1001 ModuleCallingContext
const* mcc_;
1003 unsigned int index_;
1004 bool skipCurrentProcess_;
1010 bool iSkipCurrentProcess,
1011 std::exception_ptr iExceptPtr)
const {
1012 std::vector<unsigned int>
const& lookupProcessOrder = principal.
lookupProcessOrder();
1013 auto k = lookupProcessOrder[iProcessingIndex];
1015 setCache(iSkipCurrentProcess,
k, iExceptPtr);
1020 bool iSkipCurrentProcess)
const {
1021 std::vector<unsigned int>
const& lookupProcessOrder = principal.
lookupProcessOrder();
1022 auto k = lookupProcessOrder[iProcessingIndex];
1026 setCache(iSkipCurrentProcess,
k,
nullptr);
1034 bool skipCurrentProcess,
1038 std::vector<unsigned int>
const& lookupProcessOrder = principal.
lookupProcessOrder();
1039 auto index = iProcessingIndex;
1041 const unsigned int choiceSize =
ambiguous_.size();
1043 while (
index < lookupProcessOrder.size()) {
1044 auto k = lookupProcessOrder[
index];
1056 auto task =
new (tbb::task::allocate_root())
1057 TryNextResolverWaitingTask(
this,
index, &principal, sra, mcc, skipCurrentProcess,
token);
1058 task->increment_ref_count();
1065 if (0 ==
task->decrement_ref_count()) {
1066 tbb::task::spawn(*
task);
1073 setCache(skipCurrentProcess, newCacheIndex,
nullptr);
1101 <<
"NoProcessProductResolver::unscheduledWasNotRun_() not implemented and should never be called.\n"
1102 <<
"Contact a Framework developer\n";
1107 <<
"NoProcessProductResolver::productUnavailable_() not implemented and should never be called.\n"
1108 <<
"Contact a Framework developer\n";
1113 <<
"NoProcessProductResolver::productResolved_() not implemented and should never be called.\n"
1114 <<
"Contact a Framework developer\n";
1119 <<
"NoProcessProductResolver::productWasDeleted_() not implemented and should never be called.\n"
1120 <<
"Contact a Framework developer\n";
1125 <<
"NoProcessProductResolver::productWasFetchedAndIsValid_() not implemented and should never be called.\n"
1126 <<
"Contact a Framework developer\n";
1131 <<
"NoProcessProductResolver::putProduct_() not implemented and should never be called.\n"
1132 <<
"Contact a Framework developer\n";
1138 <<
"NoProcessProductResolver::putOrMergeProduct_(std::unique_ptr<WrapperBase> edp, MergeableRunProductMetadata "
1139 "const*) not implemented and should never be called.\n"
1140 <<
"Contact a Framework developer\n";
1145 <<
"NoProcessProductResolver::branchDescription_() not implemented and should never be called.\n"
1146 <<
"Contact a Framework developer\n";
1151 <<
"NoProcessProductResolver::resetBranchDescription_() not implemented and should never be called.\n"
1152 <<
"Contact a Framework developer\n";
1157 <<
"NoProcessProductResolver::provenance_() not implemented and should never be called.\n"
1158 <<
"Contact a Framework developer\n";
1163 <<
"NoProcessProductResolver::connectTo() not implemented and should never be called.\n"
1164 <<
"Contact a Framework developer\n";
1170 bool skipCurrentProcess,
1176 ->resolveProduct(principal, skipCurrentProcess, sra, mcc);
1181 bool skipCurrentProcess,
1186 ->prefetchAsync(waitTask, principal, skipCurrentProcess,
token, sra, mcc);
1201 <<
"SingleChoiceNoProcessProductResolver::unscheduledWasNotRun_() not implemented and should never be called.\n"
1202 <<
"Contact a Framework developer\n";
1207 <<
"SingleChoiceNoProcessProductResolver::productUnavailable_() not implemented and should never be called.\n"
1208 <<
"Contact a Framework developer\n";
1213 <<
"SingleChoiceNoProcessProductResolver::productResolved_() not implemented and should never be called.\n"
1214 <<
"Contact a Framework developer\n";
1219 <<
"SingleChoiceNoProcessProductResolver::productWasDeleted_() not implemented and should never be called.\n"
1220 <<
"Contact a Framework developer\n";
1225 "implemented and should never be called.\n"
1226 <<
"Contact a Framework developer\n";
1231 <<
"SingleChoiceNoProcessProductResolver::putProduct_() not implemented and should never be called.\n"
1232 <<
"Contact a Framework developer\n";
1238 <<
"SingleChoiceNoProcessProductResolver::putOrMergeProduct_(std::unique_ptr<WrapperBase> edp, "
1239 "MergeableRunProductMetadata const*) not implemented and should never be called.\n"
1240 <<
"Contact a Framework developer\n";
1245 <<
"SingleChoiceNoProcessProductResolver::branchDescription_() not implemented and should never be called.\n"
1246 <<
"Contact a Framework developer\n";
1251 "implemented and should never be called.\n"
1252 <<
"Contact a Framework developer\n";
1257 <<
"SingleChoiceNoProcessProductResolver::provenance_() not implemented and should never be called.\n"
1258 <<
"Contact a Framework developer\n";
1263 <<
"SingleChoiceNoProcessProductResolver::connectTo() not implemented and should never be called.\n"
1264 <<
"Contact a Framework developer\n";
void setupUnscheduled(UnscheduledConfigurator const &) final
Resolution resolveProduct_(Principal const &principal, bool skipCurrentProcess, SharedResourcesAcquirer *sra, ModuleCallingContext const *mcc) const final
Provenance const * provenance() const
Resolution resolveProduct_(Principal const &principal, bool skipCurrentProcess, SharedResourcesAcquirer *sra, ModuleCallingContext const *mcc) const override
void putProduct_(std::unique_ptr< WrapperBase > edp) const override
std::string const & moduleLabel() const
bool productWasFetchedAndIsValid_(bool iSkipCurrentProcess) const final
void putProduct_(std::unique_ptr< WrapperBase > edp) const override
unsigned int ProductResolverIndex
void putProduct(std::unique_ptr< WrapperBase > edp) const
void putProduct_(std::unique_ptr< WrapperBase > edp) const override
void setProductID_(ProductID const &pid) override
void resetBranchDescription_(std::shared_ptr< BranchDescription const > bd) override
std::vector< ProductResolverIndex > matchingHolders_
void putOrMergeProduct(std::unique_ptr< WrapperBase > edp, MergeableRunProductMetadata const *mergeableRunProductMetadata=nullptr) const
void addContext(std::string const &context)
std::shared_ptr< BranchDescription const > bd_
bool singleProduct_() const override
EventSetupImpl const * eventSetup() const
void emit(Args &&... args) const
unsigned int unsetIndexValue() const
NoProcessProductResolver(std::vector< ProductResolverIndex > const &matchingHolders, std::vector< bool > const &ambiguous, bool madeAtEnd)
void connectTo(ProductResolverBase const &iOther, Principal const *) final
void prefetchAsync_(WaitingTask *waitTask, Principal const &principal, bool skipCurrentProcess, ServiceToken const &token, SharedResourcesAcquirer *sra, ModuleCallingContext const *mcc) const override
TypeWithDict const & unwrappedType() const
bool unscheduledWasNotRun_() const override
std::vector< bool > ambiguous_
WrapperBase const * wrapper() const
void resetProductData_(bool deleteEarly) override
static constexpr unsigned int kAmbiguousOffset
std::type_info const & unvalidatedTypeInfo() const
ProductProvenance const * productProvenance() const
bool unscheduledWasNotRun_() const override
std::atomic< unsigned int > lastSkipCurrentCheckIndex_
WaitingTaskList waitingTasks_
void add(WaitingTask *)
Adds task to the waiting list.
void resetProductData_(bool deleteEarly) override
static ParentageRegistry * instance()
std::string const & moduleName() const
static constexpr unsigned int kMissingOffset
std::atomic< ProductStatus > theStatus_
void putOrMergeProduct_(std::unique_ptr< WrapperBase > prod, MergeableRunProductMetadata const *mergeableRunProductMetadata) const final
FunctorTask< F > * make_functor_task(ALLOC &&iAlloc, F f)
void resetProductData_(bool deleteEarly) override
void resetProductData_(bool deleteEarly) override
bool productResolved() const
void prefetchFailed(unsigned int iProcessingIndex, Principal const &principal, bool iSkipCurrentProcess, std::exception_ptr iExceptPtr) const
void setMergeableRunProductMetadataInProductData(MergeableRunProductMetadata const *)
bool singleProduct_() const override
ProductProvenanceRetriever const * provRetriever_
static HepMC::HEPEVT_Wrapper wrapper
std::atomic< unsigned int > lastCheckIndex_
void setProductID_(ProductID const &pid) final
void resetBranchDescription_(std::shared_ptr< BranchDescription const > bd) override
ProductStatus defaultStatus() const
WaitingTaskList & waitingTasks() const
Resolution tryResolver(unsigned int index, Principal const &principal, bool skipCurrentProcess, SharedResourcesAcquirer *sra, ModuleCallingContext const *mcc) const
ConstProductResolverPtr getProductResolverByIndex(ProductResolverIndex const &oid) const
void setProductProvenanceRetriever_(ProductProvenanceRetriever const *provRetriever) override
ParentContext const & parent() const
Provenance const & provenance() const
bool productUnavailable() const
void reset()
Resets access to the resource so that added tasks will wait.
void putOrMergeProduct_(std::unique_ptr< WrapperBase > edp, MergeableRunProductMetadata const *mergeableRunProductMetadata) const final
void putProduct_(std::unique_ptr< WrapperBase > edp) const override
std::atomic< bool > skippingPrefetchRequested_
void insertIntoSet(ProductProvenance provenanceProduct) const
static constexpr unsigned int kUnsetOffset
void setProduct(std::unique_ptr< WrapperBase > edp) const
void setProductProvenanceRetriever_(ProductProvenanceRetriever const *provRetriever) override
void throwNullRealProduct() const
Resolution resolveProduct_(Principal const &principal, bool skipCurrentProcess, SharedResourcesAcquirer *sra, ModuleCallingContext const *mcc) const override
std::string const & processName() const
void prefetchAsync_(WaitingTask *waitTask, Principal const &principal, bool skipCurrentProcess, ServiceToken const &token, SharedResourcesAcquirer *sra, ModuleCallingContext const *mcc) const override
bool singleProduct_() const override
void mergeProduct(std::unique_ptr< WrapperBase > edp, MergeableRunProductMetadata const *) const
void callWhenDoneAsync(WaitingTask *task)
DelayedReader * reader() const
Resolution resolveProductImpl(FUNC resolver) const
bool productWasFetchedAndIsValid_(bool iSkipCurrentProcess) const override
Resolution resolveProductImpl(Resolution) const
void putOrMergeProduct_(std::unique_ptr< WrapperBase > prod, MergeableRunProductMetadata const *mergeableRunProductMetadata) const final
bool productUnavailable_() const override
bool productUnavailable_() const final
BranchID const & originalBranchID() const
BranchType const & branchType() const
std::string const & processName() const
void doneWaiting(std::exception_ptr iPtr)
Signals that the resource is now available and tasks should be spawned.
TypeID unwrappedTypeID() const
DataManagingOrAliasProductResolver const & realProduct() const
Resolution resolveProduct(Principal const &principal, bool skipCurrentProcess, SharedResourcesAcquirer *sra, ModuleCallingContext const *mcc) const
WaitingTaskList waitingTasks_
UnscheduledAuxiliary const * aux_
bool productResolved_() const final
FunctorWaitingTask< F > * make_waiting_task(ALLOC &&iAlloc, F f)
void throwProductDeletedException() const
ProductResolverIndex realResolverIndex_
void setProductProvenanceRetriever_(ProductProvenanceRetriever const *provRetriever) override
signalslot::Signal< void(StreamContext const &, ModuleCallingContext const &)> preModuleDelayedGetSignal_
Resolution resolveProduct_(Principal const &principal, bool skipCurrentProcess, SharedResourcesAcquirer *sra, ModuleCallingContext const *mcc) const override
void setProductProvenanceRetriever_(ProductProvenanceRetriever const *provRetriever) final
void tryPrefetchResolverAsync(unsigned int iProcessingIndex, Principal const &principal, bool skipCurrentProcess, SharedResourcesAcquirer *sra, ModuleCallingContext const *mcc, ServiceToken token) const
DataManagingOrAliasProductResolver & realProduct_
void setCache(bool skipCurrentProcess, ProductResolverIndex index, std::exception_ptr exceptionPtr) const
void setProductID(ProductID const &pid)
ProductProvenance const * productProvenancePtr_() const override
BranchDescription const & branchDescription_() const override
Provenance const * provenance_() const override
void setProductProvenanceRetriever_(ProductProvenanceRetriever const *provRetriever) override
void setProvenance(ProductProvenanceRetriever const *provRetriever)
std::atomic< bool > prefetchRequested_
bool productResolved_() const final
void prefetchAsync_(WaitingTask *waitTask, Principal const &principal, bool skipCurrentProcess, ServiceToken const &token, SharedResourcesAcquirer *sra, ModuleCallingContext const *mcc) const final
void putOrMergeProduct_(std::unique_ptr< WrapperBase > prod, MergeableRunProductMetadata const *mergeableRunProductMetadata) const final
StreamContext const * getStreamContext() const
void doWorkAsync(WaitingTask *task, typename T::MyPrincipal const &, EventSetupImpl const &c, ServiceToken const &token, StreamID stream, ParentContext const &parentContext, typename T::Context const *context)
void connectTo(ProductResolverBase const &iOther, Principal const *) final
void setupUnscheduled(UnscheduledConfigurator const &) final
std::atomic< bool > prefetchRequested_
void connectTo(ProductResolverBase const &iOther, Principal const *iParentPrincipal) final
BranchDescription const & branchDescription_() const override
void setProductID_(ProductID const &pid) final
void resetProductData_(bool deleteEarly) override=0
void resetProductData_(bool deleteEarly) override
bool productResolved_() const final
ProductProvenanceRetriever const * store() const
void prefetchAsync_(WaitingTask *waitTask, Principal const &principal, bool skipCurrentProcess, ServiceToken const &token, SharedResourcesAcquirer *sra, ModuleCallingContext const *mcc) const override
Worker * findWorker(std::string const &iLabel) const
WaitingTaskList m_waitingTasks
BranchType const & branchType() const
std::string const & branchName() const
ModuleDescription const & description() const
bool productWasFetchedAndIsValid(bool iSkipCurrentProcess) const
std::vector< unsigned int > const & lookupProcessOrder() const
bool isFromCurrentProcess() const final
bool dataValidFromResolver(unsigned int iProcessingIndex, Principal const &principal, bool iSkipCurrentProcess) const
void putOrMergeProduct_(std::unique_ptr< WrapperBase > prod, MergeableRunProductMetadata const *mergeableRunProductMetadata) const final
static Resolution makeAmbiguous()
WaitingTaskList waitingTasks_
void setProductID_(ProductID const &pid) override
std::string const & moduleLabel() const
void resetProductData_(bool deleteEarly) override
bool singleProduct_() const final
std::unique_ptr< T, impl::DeviceDeleter > unique_ptr
void resetProductData_(bool deleteEarly) override
BranchDescription const & branchDescription_() const final
Resolution resolveProduct_(Principal const &principal, bool skipCurrentProcess, SharedResourcesAcquirer *sra, ModuleCallingContext const *mcc) const override
void resetProductData_(bool deleteEarly) override
UnscheduledAuxiliary const * auxiliary() const
void checkType(WrapperBase const &prod) const
WrapperBase * unsafe_wrapper() const
ProductStatus status() const
bool insertMapped(value_type const &v)
void setupUnscheduled(UnscheduledConfigurator const &iConfigure) final
void putOrMergeProduct_(std::unique_ptr< WrapperBase > prod, MergeableRunProductMetadata const *mergeableRunProductMetadata) const final
ProductData const & getProductData() const final
BranchDescription const & branchDescription() const
bool productWasDeleted_() const override
WaitingTaskList skippingWaitingTasks_
ProductData const & getProductData() const final
SwitchProducerProductResolver(std::shared_ptr< BranchDescription const > bd, DataManagingOrAliasProductResolver &realProduct)
bool productWasFetchedAndIsValid_(bool iSkipCurrentProcess) const override
void setMergeableRunProductMetadata(MergeableRunProductMetadataBase const *mrpm)
void putProduct_(std::unique_ptr< WrapperBase > edp) const final
void setProductID_(ProductID const &pid) override
void setProductProvenanceRetriever_(ProductProvenanceRetriever const *provRetriever) final
void setFailedStatus() const
ProductProvenance const * branchIDToProvenance(BranchID const &bid) const
bool productWasDeleted() const
std::unique_ptr< T, F > make_sentry(T *iObject, F iFunc)
NOTE: if iObject is null, then iFunc will not be called.
void resetProductData_(bool deleteEarly) final
void putProduct_(std::unique_ptr< WrapperBase > edp) const override
bool doWork(typename T::MyPrincipal const &, EventSetupImpl const &c, StreamID stream, ParentContext const &parentContext, typename T::Context const *context)
signalslot::Signal< void(StreamContext const &, ModuleCallingContext const &)> postModuleDelayedGetSignal_
The Signals That Services Can Subscribe To This is based on ActivityRegistry and is current per Services can connect to the signals distributed by the ActivityRegistry in order to monitor the activity of the application Each possible callback has some defined which we here list in angle e< void, edm::EventID const &, edm::Timestamp const & > We also list in braces which AR_WATCH_USING_METHOD_ is used for those or
void prefetchAsync(WaitingTask *waitTask, Principal const &principal, bool skipCurrentProcess, ServiceToken const &token, SharedResourcesAcquirer *sra, ModuleCallingContext const *mcc) const
bool productUnavailable_() const final
std::atomic< bool > prefetchRequested_
void prefetchAsync_(WaitingTask *waitTask, Principal const &principal, bool skipCurrentProcess, ServiceToken const &token, SharedResourcesAcquirer *sra, ModuleCallingContext const *mcc) const final
void putProduct_(std::unique_ptr< WrapperBase > edp) const override
std::atomic< bool > & prefetchRequested() const
DataManagingOrAliasProductResolver & realProduct_
void connectTo(ProductResolverBase const &, Principal const *) final
std::string const & className() const
constexpr static const ProductStatus defaultStatus_
bool productResolved_() const final
void putProduct_(std::unique_ptr< WrapperBase > edp) const final
std::string const & productInstanceName() const
void setProductID(ProductID const &pid)
ProductProvenance const * productProvenancePtr_() const override
void prefetchAsync_(WaitingTask *waitTask, Principal const &principal, bool skipCurrentProcess, ServiceToken const &token, SharedResourcesAcquirer *sra, ModuleCallingContext const *mcc) const override
ProductProvenance const * productProvenancePtr_() const final
void unsafe_setWrapperAndProvenance() const
void setProductID_(ProductID const &pid) override
bool isAtEndTransition() const
How EventSelector::AcceptEvent() decides whether to accept an event for output otherwise it is excluding the probing of A single or multiple positive and the trigger will pass if any such matching triggers are PASS or EXCEPTION[A criterion thatmatches no triggers at all is detected and causes a throw.] A single negative with an expectation of appropriate bit checking in the decision and the trigger will pass if any such matching triggers are FAIL or EXCEPTION A wildcarded negative criterion that matches more than one trigger in the trigger but the state exists so we define the behavior If all triggers are the negative crieriion will lead to accepting the event(this again matches the behavior of "!*" before the partial wildcard feature was incorporated). The per-event "cost" of each negative criterion with multiple relevant triggers is about the same as ! *was in the past
bool productWasDeleted_() const final
virtual bool isFromCurrentProcess() const =0
void setProductProvenanceRetriever(ProductProvenanceRetriever const *provRetriever)
Resolution resolveProduct_(Principal const &principal, bool skipCurrentProcess, SharedResourcesAcquirer *sra, ModuleCallingContext const *mcc) const final
bool productWasDeleted_() const override
std::atomic< bool > prefetchRequested_
bool productUnavailable_() const override
ProductProvenance const * productProvenancePtr_() const override
ProductProvenance const * productProvenancePtr_() const override
Provenance const * provenance_() const override
void unsafe_setWrapper(std::unique_ptr< WrapperBase > iValue) const
bool singleProduct_() const override
SwitchBaseProductResolver(std::shared_ptr< BranchDescription const > bd, DataManagingOrAliasProductResolver &realProduct)