35 exception <<
"DataManagingProductResolver::resolveProduct_: The product matching all criteria was already deleted\n" 37 <<
"Looking for module label: " <<
moduleLabel() <<
"\n" 40 <<
"This means there is a configuration error.\n" 41 <<
"The module which is asking for this data must be configured to state that it will read this data.";
46 template <
bool callResolver,
typename FUNC>
51 auto presentStatus =
status();
56 auto failedStatusSetter = [
this](
ProductStatus* iPresentStatus) {
60 *iPresentStatus = this->
status();
62 std::unique_ptr<ProductStatus, decltype(failedStatusSetter)> failedStatusGuard(&presentStatus,
71 if (pd->wrapper()->isPresent()) {
96 if (
original->isPresent() != iFrom->isPresent()) {
99 <<
"Was trying to merge objects where one product had been put in the input file and the other had not " 102 <<
"The solution is to drop the branch on input. Or better do not create inconsistent files\n" 103 <<
"that need to be merged in the first place.\n";
107 if (mergeableRunProductMetadata ==
nullptr ||
desc.branchType() !=
InRun) {
108 original->mergeProduct(iFrom.get());
113 original->mergeProduct(iFrom.get());
128 }
else if (
original->hasIsProductEqual()) {
129 if (
original->isPresent() && iFrom->isPresent()) {
130 if (!
original->isProductEqual(iFrom.get())) {
133 <<
"ProductResolver::mergeTheProduct\n" 134 <<
"Two run/lumi products for the same run/lumi which should be equal are not\n" 135 <<
"Using the first, ignoring the second\n" 136 <<
"className = " <<
bd.className() <<
"\n" 137 <<
"moduleLabel = " <<
bd.moduleLabel() <<
"\n" 138 <<
"instance = " <<
bd.productInstanceName() <<
"\n" 139 <<
"process = " <<
bd.processName() <<
"\n";
141 }
else if (!
original->isPresent() && iFrom->isPresent()) {
147 edm::LogWarning(
"RunLumiMerging") <<
"ProductResolver::mergeTheProduct\n" 148 <<
"Run/lumi product has neither a mergeProduct nor isProductEqual function\n" 149 <<
"Using the first, ignoring the second in merge\n" 150 <<
"className = " <<
bd.className() <<
"\n" 151 <<
"moduleLabel = " <<
bd.moduleLabel() <<
"\n" 152 <<
"instance = " <<
bd.productInstanceName() <<
"\n" 153 <<
"process = " <<
bd.processName() <<
"\n";
154 if (!
original->isPresent() && iFrom->isPresent()) {
163 e.addContext(
std::string(
"While reading from source ") +
bd.className() +
" " +
bd.moduleLabel() +
" '" +
164 bd.productInstanceName() +
"' " +
bd.processName());
173 return resolveProductImpl<true>([
this, &principal, mcc]() {
174 auto branchType = principal.branchType();
190 if (
auto reader = principal.reader()) {
191 std::unique_lock<std::recursive_mutex> guard;
192 if (
auto sr =
reader->sharedResources().second) {
193 guard = std::unique_lock<std::recursive_mutex>(*sr);
213 std::unique_lock<std::recursive_mutex> guard;
214 if (
auto sr =
reader->sharedResources().second) {
215 guard = std::unique_lock<std::recursive_mutex>(*sr);
222 if (edp.get() !=
nullptr) {
227 <<
"Mergeable data types written to a Run must have the swap member function defined" 236 <<
"The product branch was dropped in the first run or lumi fragment and present in a later one" 238 <<
"The solution is to drop the branch on input. Or better do not create inconsistent files\n" 239 <<
"that need to be merged in the first place.\n";
246 <<
"The product branch was present in first run or lumi fragment and dropped in a later one" 248 <<
"The solution is to drop the branch on input. Or better do not create inconsistent files\n" 249 <<
"that need to be merged in the first place.\n";
272 bool skipCurrentProcess,
277 bool expected =
false;
281 if (prefetchRequested) {
283 auto workToDo = [
this, mcc, &principal, weakToken]() {
288 resolveProductImpl<true>([
this, &principal, mcc]() {
289 if (principal.branchType() !=
InEvent && principal.branchType() !=
InProcess) {
292 if (
auto reader = principal.reader()) {
293 std::unique_lock<std::recursive_mutex> guard;
294 if (
auto sr =
reader->sharedResources().second) {
295 guard = std::unique_lock<std::recursive_mutex>(*sr);
318 if (
auto reader = principal.reader()) {
319 if (
auto shared_res =
reader->sharedResources().first) {
320 queue = &(shared_res->serialQueueChain());
328 waitTask.
group()->run([
t]() {
337 if (not deleteEarly) {
362 bool skipCurrentProcess,
365 return resolveProductImpl<false>([]() {
return; });
370 bool skipCurrentProcess,
380 bool skipCurrentProcess,
383 if (!skipCurrentProcess) {
385 return resolveProductImpl<false>([]() {
return; });
392 bool skipCurrentProcess,
396 if (not skipCurrentProcess) {
433 bool skipCurrentProcess,
436 if (!skipCurrentProcess and
worker_) {
437 return resolveProductImpl<false>([] {});
444 bool skipCurrentProcess,
448 if (skipCurrentProcess) {
452 throw cms::Exception(
"LogicError") <<
"UnscheduledProductResolver::prefetchAsync_() called with null worker_. " 453 "This should not happen, please contact framework developers.";
456 bool expected =
false;
459 if (prefetchRequested) {
467 resolveProductImpl<true>([iPtr]() {
469 std::rethrow_exception(*iPtr);
485 info.principal().streamID(),
492 if (not deleteEarly) {
510 bool skipCurrentProcess,
513 if (!skipCurrentProcess and
worker_) {
514 return resolveProductImpl<false>([] {});
532 bool skipCurrentProcess,
536 if (skipCurrentProcess) {
540 throw cms::Exception(
"LogicError") <<
"TransformingProductResolver::prefetchAsync_() called with null worker_. " 541 "This should not happen, please contact framework developers.";
544 bool expected =
false;
547 if (prefetchRequested) {
555 resolveProductImpl<true>([iPtr]() {
557 std::rethrow_exception(*iPtr);
576 info.principal().streamID(),
583 if (not deleteEarly) {
611 <<
"It is actually of type " << typeID.className() <<
".\n";
638 auto presentStatus =
status();
709 : realProduct_(realProduct), productData_(
std::
move(
bd)), prefetchRequested_(
false) {
719 <<
"SwitchBaseProductResolver::connectTo() not implemented and should never be called.\n" 720 <<
"Contact a Framework developer\n";
728 if (
res.data() ==
nullptr)
753 if (not deleteEarly) {
771 bool skipCurrentProcess,
782 bool skipCurrentProcess,
786 if (skipCurrentProcess) {
794 bool expected =
false;
795 bool doPrefetchRequested =
prefetchRequested().compare_exchange_strong(expected,
true);
798 if (doPrefetchRequested) {
804 if (
nullptr != iException) {
819 <<
"This makes no sense for SwitchProducerProductResolver.\nContact a Framework developer";
824 bool expected =
false;
841 if (not deleteEarly) {
847 bool skipCurrentProcess,
855 bool skipCurrentProcess,
859 if (skipCurrentProcess) {
864 bool expected =
false;
865 bool doPrefetchRequested =
prefetchRequested().compare_exchange_strong(expected,
true);
868 if (doPrefetchRequested) {
874 if (
nullptr != iException) {
917 <<
"ParentProcessProductResolver::throwNullRealProduct RealProduct pointer not set in this context.\n" 918 <<
"Contact a Framework developer\n";
922 std::vector<bool>
const& ambiguous,
924 : matchingHolders_(matchingHolders),
925 ambiguous_(ambiguous),
927 lastSkipCurrentCheckIndex_(lastCheckIndex_.
load()),
928 prefetchRequested_(
false),
929 skippingPrefetchRequested_(
false),
930 madeAtEnd_{madeAtEnd} {
931 assert(ambiguous_.size() == matchingHolders_.size());
936 bool skipCurrentProcess,
940 return productResolver->
resolveProduct(principal, skipCurrentProcess, sra, mcc);
944 bool skipCurrentProcess,
949 const unsigned int choiceSize =
ambiguous_.size();
952 if ((not skipCurrentProcess) and (
madeAtEnd_ and mcc)) {
953 skipCurrentProcess = not mcc->parent().isAtEndTransition();
963 return tryResolver(checkCacheIndex, principal, skipCurrentProcess, sra, mcc);
969 for (
unsigned int k : lookupProcessOrder) {
980 updateCacheIndex =
k;
992 bool skipCurrentProcess,
996 bool timeToMakeAtEnd =
true;
998 timeToMakeAtEnd = mcc->parent().isAtEndTransition();
1002 if (not skipCurrentProcess and timeToMakeAtEnd) {
1004 bool expected =
false;
1008 if (prefetchRequested) {
1014 bool expected =
false;
1024 std::exception_ptr iExceptPtr)
const {
1025 if (not iSkipCurrentProcess) {
1038 unsigned int iResolverIndex,
1042 bool iSkipCurrentProcess,
1044 oneapi::tbb::task_group* iGroup)
1045 : resolver_(iResolver),
1046 principal_(iPrincipal),
1050 serviceToken_(iToken),
1051 index_(iResolverIndex),
1052 skipCurrentProcess_(iSkipCurrentProcess) {}
1054 void execute() final {
1055 auto exceptPtr = exceptionPtr();
1057 resolver_->prefetchFailed(index_, *principal_, skipCurrentProcess_, exceptPtr);
1059 if (not resolver_->dataValidFromResolver(index_, *principal_, skipCurrentProcess_)) {
1060 resolver_->tryPrefetchResolverAsync(
1061 index_ + 1, *principal_, skipCurrentProcess_, sra_, mcc_, serviceToken_.lock(), group_);
1067 NoProcessProductResolver
const* resolver_;
1068 Principal
const* principal_;
1070 ModuleCallingContext
const* mcc_;
1071 oneapi::tbb::task_group* group_;
1072 ServiceWeakToken serviceToken_;
1073 unsigned int index_;
1074 bool skipCurrentProcess_;
1080 bool iSkipCurrentProcess,
1081 std::exception_ptr iExceptPtr)
const {
1082 std::vector<unsigned int>
const& lookupProcessOrder = principal.
lookupProcessOrder();
1083 auto k = lookupProcessOrder[iProcessingIndex];
1085 setCache(iSkipCurrentProcess,
k, iExceptPtr);
1090 bool iSkipCurrentProcess)
const {
1091 std::vector<unsigned int>
const& lookupProcessOrder = principal.
lookupProcessOrder();
1092 auto k = lookupProcessOrder[iProcessingIndex];
1096 setCache(iSkipCurrentProcess,
k,
nullptr);
1104 bool skipCurrentProcess,
1108 oneapi::tbb::task_group*
group)
const {
1109 std::vector<unsigned int>
const& lookupProcessOrder = principal.
lookupProcessOrder();
1110 auto index = iProcessingIndex;
1112 const unsigned int choiceSize =
ambiguous_.size();
1114 while (
index < lookupProcessOrder.size()) {
1115 auto k = lookupProcessOrder[
index];
1127 auto task =
new TryNextResolverWaitingTask(
this,
index, &principal, sra, mcc, skipCurrentProcess,
token,
group);
1134 productResolver->
prefetchAsync(hTask, principal, skipCurrentProcess,
token, sra, mcc);
1140 setCache(skipCurrentProcess, newCacheIndex,
nullptr);
1168 <<
"NoProcessProductResolver::unscheduledWasNotRun_() not implemented and should never be called.\n" 1169 <<
"Contact a Framework developer\n";
1174 <<
"NoProcessProductResolver::productUnavailable_() not implemented and should never be called.\n" 1175 <<
"Contact a Framework developer\n";
1180 <<
"NoProcessProductResolver::productResolved_() not implemented and should never be called.\n" 1181 <<
"Contact a Framework developer\n";
1186 <<
"NoProcessProductResolver::productWasDeleted_() not implemented and should never be called.\n" 1187 <<
"Contact a Framework developer\n";
1192 <<
"NoProcessProductResolver::productWasFetchedAndIsValid_() not implemented and should never be called.\n" 1193 <<
"Contact a Framework developer\n";
1198 <<
"NoProcessProductResolver::branchDescription_() not implemented and should never be called.\n" 1199 <<
"Contact a Framework developer\n";
1204 <<
"NoProcessProductResolver::resetBranchDescription_() not implemented and should never be called.\n" 1205 <<
"Contact a Framework developer\n";
1210 <<
"NoProcessProductResolver::provenance_() not implemented and should never be called.\n" 1211 <<
"Contact a Framework developer\n";
1216 <<
"NoProcessProductResolver::connectTo() not implemented and should never be called.\n" 1217 <<
"Contact a Framework developer\n";
1223 bool skipCurrentProcess,
1229 ->resolveProduct(principal, skipCurrentProcess, sra, mcc);
1234 bool skipCurrentProcess,
1239 ->prefetchAsync(waitTask, principal, skipCurrentProcess,
token, sra, mcc);
1254 <<
"SingleChoiceNoProcessProductResolver::unscheduledWasNotRun_() not implemented and should never be called.\n" 1255 <<
"Contact a Framework developer\n";
1260 <<
"SingleChoiceNoProcessProductResolver::productUnavailable_() not implemented and should never be called.\n" 1261 <<
"Contact a Framework developer\n";
1266 <<
"SingleChoiceNoProcessProductResolver::productResolved_() not implemented and should never be called.\n" 1267 <<
"Contact a Framework developer\n";
1272 <<
"SingleChoiceNoProcessProductResolver::productWasDeleted_() not implemented and should never be called.\n" 1273 <<
"Contact a Framework developer\n";
1278 "implemented and should never be called.\n" 1279 <<
"Contact a Framework developer\n";
1284 <<
"SingleChoiceNoProcessProductResolver::branchDescription_() not implemented and should never be called.\n" 1285 <<
"Contact a Framework developer\n";
1290 "implemented and should never be called.\n" 1291 <<
"Contact a Framework developer\n";
1296 <<
"SingleChoiceNoProcessProductResolver::provenance_() not implemented and should never be called.\n" 1297 <<
"Contact a Framework developer\n";
1302 <<
"SingleChoiceNoProcessProductResolver::connectTo() not implemented and should never be called.\n" 1303 <<
"Contact a Framework developer\n";
void setProductProvenanceRetriever_(ProductProvenanceRetriever const *provRetriever) override
void connectTo(ProductResolverBase const &iOther, Principal const *) final
void setProductID(ProductID const &pid)
ProductData const & getProductData() const final
ProductProvenance const * productProvenancePtr_() const override
BranchDescription const & branchDescription_() const override
void setProductProvenanceRetriever_(ProductProvenanceRetriever const *provRetriever) final
std::string const & productInstanceName() 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) override
bool productWasDeleted_() const override
void prefetchAsync_(WaitingTaskHolder waitTask, Principal const &principal, bool skipCurrentProcess, ServiceToken const &token, SharedResourcesAcquirer *sra, ModuleCallingContext const *mcc) const override
void prefetchAsync_(WaitingTaskHolder waitTask, Principal const &principal, bool skipCurrentProcess, ServiceToken const &token, SharedResourcesAcquirer *sra, ModuleCallingContext const *mcc) const override
static constexpr unsigned int kAmbiguousOffset
Resolution resolveProduct_(Principal const &principal, bool skipCurrentProcess, SharedResourcesAcquirer *sra, ModuleCallingContext const *mcc) const final
bool singleProduct_() const override
void exceptionContext(cms::Exception &, ESModuleCallingContext const &)
unsigned int ProductResolverIndex
ProductProvenance const * productProvenance() const
static constexpr unsigned int kMissingOffset
std::vector< unsigned int > const & lookupProcessOrder() const
std::shared_ptr< BranchDescription const > bd_
Provenance const & provenance() const
void resetProductData_(bool deleteEarly) override
GlobalContext const * globalContext() const
BranchType const & branchType() const
void setProductID_(ProductID const &pid) final
void setProductProvenanceRetriever_(ProductProvenanceRetriever const *provRetriever) override
Worker * findWorker(std::string const &iLabel) const
void putProduct(std::unique_ptr< WrapperBase > edp) const final
bool dataValidFromResolver(unsigned int iProcessingIndex, Principal const &principal, bool iSkipCurrentProcess) const
void checkType(WrapperBase const &prod) const
std::atomic< bool > prefetchRequested_
ProductStatus status() const
void resetProductData_(bool deleteEarly) final
WaitingTaskList & waitingTasks() const
Resolution resolveProduct(Principal const &principal, bool skipCurrentProcess, SharedResourcesAcquirer *sra, ModuleCallingContext const *mcc) const
void doWorkAsync(WaitingTaskHolder, typename T::TransitionInfoType const &, ServiceToken const &, StreamID, ParentContext const &, typename T::Context const *)
Provenance const * provenance() const
void prefetchAsync_(WaitingTaskHolder waitTask, Principal const &principal, bool skipCurrentProcess, ServiceToken const &token, SharedResourcesAcquirer *sra, ModuleCallingContext const *mcc) const final
TypeID unwrappedTypeID() const
bool singleProduct_() const final
WaitingTaskList skippingWaitingTasks_
SwitchProducerProductResolver(std::shared_ptr< BranchDescription const > bd, DataManagingOrAliasProductResolver &realProduct)
void resetProductData_(bool deleteEarly) override
void setFailedStatus() const
bool productWasFetchedAndIsValid_(bool iSkipCurrentProcess) const override
bool unscheduledWasNotRun_() const override
bool singleProduct_() const override
Log< level::Error, false > LogError
bool productUnavailable_() const override
TypeWithDict const & unwrappedType() const
bool isAtEndTransition() const
void reset()
Resets access to the resource so that added tasks will wait.
ProductProvenanceRetriever const * provRetriever_
void connectTo(ProductResolverBase const &iOther, Principal const *) final
std::string const & processName() const
ProductData const & getProductData() const final
WrapperBase const * wrapper() const
void resetProductData_(bool deleteEarly) override
WaitingTaskList waitingTasks_
void connectTo(ProductResolverBase const &, Principal const *) final
void setProductID(ProductID const &pid)
DataManagingOrAliasProductResolver & realProduct_
bool productUnavailable_() const final
WaitingTaskList * waitingTasks_
ProductProvenance const * productProvenancePtr_() const override
bool productResolved() const
WaitingTaskList waitingTasks_
oneapi::tbb::task_group * group() const noexcept
bool singleProduct_() const override
void emit(Args &&... args) const
ProductProvenanceLookup const * store() const
void doTransformAsync(WaitingTaskHolder, size_t iTransformIndex, EventPrincipal const &, ServiceToken const &, StreamID, ModuleCallingContext const &, StreamContext const *)
void setProductID_(ProductID const &pid) override
UnscheduledAuxiliary const * aux_
void doneWaiting(std::exception_ptr iPtr)
Signals that the resource is now available and tasks should be spawned.
void tryPrefetchResolverAsync(unsigned int iProcessingIndex, Principal const &principal, bool skipCurrentProcess, SharedResourcesAcquirer *sra, ModuleCallingContext const *mcc, ServiceToken token, oneapi::tbb::task_group *) const
bool productWasDeleted_() const final
virtual bool isFromCurrentProcess() const =0
void setupUnscheduled(UnscheduledConfigurator const &iConfigure) final
bool productUnavailable() const
std::string const & moduleLabel() const
bool productResolved_() const final
SwitchBaseProductResolver(std::shared_ptr< BranchDescription const > bd, DataManagingOrAliasProductResolver &realProduct)
std::string const & className() const
ProductProvenance const * productProvenancePtr_() const final
void throwNullRealProduct() const
std::string const & branchName() const
std::atomic< unsigned int > lastSkipCurrentCheckIndex_
std::atomic< bool > prefetchRequested_
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
DataManagingOrAliasProductResolver const & realProduct() const
bool productWasFetchedAndIsValid_(bool iSkipCurrentProcess) const final
void resetProductData_(bool deleteEarly) override
void add(oneapi::tbb::task_group *, WaitingTask *)
Adds task to the waiting list.
void resetProductData_(bool deleteEarly) override
void unsafe_setWrapperAndProvenance() const
Resolution resolveProduct_(Principal const &principal, bool skipCurrentProcess, SharedResourcesAcquirer *sra, ModuleCallingContext const *mcc) const override
bool isFromCurrentProcess() const final
bool productResolved_() const final
bool productWasFetchedAndIsValid(bool iSkipCurrentProcess) const
static constexpr const ProductStatus defaultStatus_
FunctorWaitingTask< F > * make_waiting_task(F f)
std::atomic< bool > prefetchRequested_
std::atomic< unsigned int > lastCheckIndex_
void callWhenDoneAsync(WaitingTaskHolder task)
void setProductID_(ProductID const &pid) override
ProductProvenance const * branchIDToProvenance(BranchID const &bid) const
void setMergeableRunProductMetadata(MergeableRunProductMetadataBase const *mrpm)
ProductProvenance const * productProvenancePtr_() const override
WrapperBase * unsafe_wrapper() const
void setProductID_(ProductID const &pid) final
void prefetchAsync_(WaitingTaskHolder waitTask, Principal const &principal, bool skipCurrentProcess, ServiceToken const &token, SharedResourcesAcquirer *sra, ModuleCallingContext const *mcc) const override
ServiceToken lock() const
void prefetchAsync(WaitingTaskHolder waitTask, Principal const &principal, bool skipCurrentProcess, ServiceToken const &token, SharedResourcesAcquirer *sra, ModuleCallingContext const *mcc) const
virtual size_t transformIndex(edm::BranchDescription const &) const =0
void setCache(bool skipCurrentProcess, ProductResolverIndex index, std::exception_ptr exceptionPtr) const
NoProcessProductResolver(std::vector< ProductResolverIndex > const &matchingHolders, std::vector< bool > const &ambiguous, bool madeAtEnd)
std::atomic< bool > skippingPrefetchRequested_
Resolution resolveProductImpl(Resolution) const
std::atomic< ProductStatus > theStatus_
ModuleDescription const * description() const
std::vector< bool > ambiguous_
std::type_info const & unvalidatedTypeInfo() const
void setProductProvenanceRetriever_(ProductProvenanceRetriever const *provRetriever) override
static constexpr unsigned int kUnsetOffset
bool productResolved_() const final
void setProductProvenanceRetriever_(ProductProvenanceRetriever const *provRetriever) override
Provenance const * provenance_() const override
bool singleProduct_() const override
void setupUnscheduled(UnscheduledConfigurator const &) final
void setMergeableRunProductMetadataInProductData(MergeableRunProductMetadata const *)
void setProvenance(ProductProvenanceLookup const *provRetriever)
FunctorTask< F > * make_functor_task(F f)
ProductStatus defaultStatus() const
BranchDescription const & branchDescription() const
void prefetchFailed(unsigned int iProcessingIndex, Principal const &principal, bool iSkipCurrentProcess, std::exception_ptr iExceptPtr) const
void setProductID_(ProductID const &pid) override
DataManagingOrAliasProductResolver & realProduct_
signalslot::Signal< void(StreamContext const &, ModuleCallingContext const &)> preModuleDelayedGetSignal_
Transition transition() const
std::vector< ProductResolverIndex > matchingHolders_
Resolution tryResolver(unsigned int index, Principal const &principal, bool skipCurrentProcess, SharedResourcesAcquirer *sra, ModuleCallingContext const *mcc) const
Resolution resolveProduct_(Principal const &principal, bool skipCurrentProcess, SharedResourcesAcquirer *sra, ModuleCallingContext const *mcc) const override
bool availableOnlyAtEndTransition() const
unsigned int unsetIndexValue() const
StreamContext const * getStreamContext() const
bool unscheduledWasNotRun_() const override
void setProduct(std::unique_ptr< WrapperBase > edp) const
void unsafe_setWrapper(std::unique_ptr< WrapperBase > iValue) const
Provenance const * provenance_() const override
bool productWasDeleted_() const override
void prefetchAsync_(WaitingTaskHolder waitTask, Principal const &principal, bool skipCurrentProcess, ServiceToken const &token, SharedResourcesAcquirer *sra, ModuleCallingContext const *mcc) const override
void setupUnscheduled(UnscheduledConfigurator const &) final
Resolution resolveProductImpl(FUNC resolver) const
void resetProductData_(bool deleteEarly) override=0
Resolution resolveProduct_(Principal const &principal, bool skipCurrentProcess, SharedResourcesAcquirer *sra, ModuleCallingContext const *mcc) const final
Resolution resolveProduct_(Principal const &principal, bool skipCurrentProcess, SharedResourcesAcquirer *sra, ModuleCallingContext const *mcc) const override
Log< level::Warning, false > LogWarning
void resetProductData_(bool deleteEarly) override
signalslot::Signal< void(StreamContext const &, ModuleCallingContext const &)> postModuleDelayedGetSignal_
UnscheduledAuxiliary const * auxiliary() const
bool productResolved_() const final
bool productWasDeleted() const
std::atomic< bool > & prefetchRequested() const
static ParentageRegistry * instance()
bool productUnavailable_() const override
BranchDescription const & branchDescription_() const override
EventTransitionInfo const & eventTransitionInfo() const
bool productWasFetchedAndIsValid_(bool iSkipCurrentProcess) const override
void throwProductDeletedException() const
ConstProductResolverPtr getProductResolverByIndex(ProductResolverIndex const &oid) const
static Resolution makeAmbiguous()
void setProductID_(ProductID const &pid) override
ProductProvenance const * productProvenancePtr_() const override
void prefetchAsync_(WaitingTaskHolder waitTask, Principal const &principal, bool skipCurrentProcess, ServiceToken const &token, SharedResourcesAcquirer *sra, ModuleCallingContext const *mcc) const final
void resetBranchDescription_(std::shared_ptr< BranchDescription const > bd) override
WaitingTaskList waitingTasks_
bool insertMapped(value_type const &v)
void resetBranchDescription_(std::shared_ptr< BranchDescription const > bd) override
void setProductProvenanceRetriever_(ProductProvenanceRetriever const *provRetriever) final
DelayedReader * reader() const
void putProduct(std::unique_ptr< WrapperBase > edp) const override
void setProductProvenanceRetriever(ProductProvenanceRetriever const *provRetriever)
bool productUnavailable_() const final
void insertIntoSet(ProductProvenance provenanceProduct) const
static HepMC::HEPEVT_Wrapper wrapper
ProductResolverIndex realResolverIndex_
ParentContext const & parent() const
BranchID const & originalBranchID() const
Resolution resolveProduct_(Principal const &principal, bool skipCurrentProcess, SharedResourcesAcquirer *sra, ModuleCallingContext const *mcc) const override
void connectTo(ProductResolverBase const &iOther, Principal const *iParentPrincipal) final