|
 |
Go to the documentation of this file.
36 exception <<
"DataManagingProductResolver::resolveProduct_: The product matching all criteria was already deleted\n"
38 <<
"Looking for module label: " <<
moduleLabel() <<
"\n"
41 <<
"This means there is a configuration error.\n"
42 <<
"The module which is asking for this data must be configured to state that it will read this data.";
47 template <
bool callResolver,
typename FUNC>
52 auto presentStatus =
status();
57 auto failedStatusSetter = [
this](
ProductStatus* iPresentStatus) {
61 *iPresentStatus = this->
status();
72 if (pd->wrapper()->isPresent()) {
97 if (
original->isPresent() != iFrom->isPresent()) {
100 <<
"Was trying to merge objects where one product had been put in the input file and the other had not "
103 <<
"The solution is to drop the branch on input. Or better do not create inconsistent files\n"
104 <<
"that need to be merged in the first place.\n";
108 if (mergeableRunProductMetadata ==
nullptr ||
desc.branchType() !=
InRun) {
109 original->mergeProduct(iFrom.get());
114 original->mergeProduct(iFrom.get());
129 }
else if (
original->hasIsProductEqual()) {
130 if (
original->isPresent() && iFrom->isPresent()) {
131 if (!
original->isProductEqual(iFrom.get())) {
134 <<
"ProductResolver::mergeTheProduct\n"
135 <<
"Two run/lumi products for the same run/lumi which should be equal are not\n"
136 <<
"Using the first, ignoring the second\n"
137 <<
"className = " <<
bd.className() <<
"\n"
138 <<
"moduleLabel = " <<
bd.moduleLabel() <<
"\n"
139 <<
"instance = " <<
bd.productInstanceName() <<
"\n"
140 <<
"process = " <<
bd.processName() <<
"\n";
142 }
else if (!
original->isPresent() && iFrom->isPresent()) {
148 edm::LogWarning(
"RunLumiMerging") <<
"ProductResolver::mergeTheProduct\n"
149 <<
"Run/lumi product has neither a mergeProduct nor isProductEqual function\n"
150 <<
"Using the first, ignoring the second in merge\n"
151 <<
"className = " <<
bd.className() <<
"\n"
152 <<
"moduleLabel = " <<
bd.moduleLabel() <<
"\n"
153 <<
"instance = " <<
bd.productInstanceName() <<
"\n"
154 <<
"process = " <<
bd.processName() <<
"\n";
155 if (!
original->isPresent() && iFrom->isPresent()) {
166 return resolveProductImpl<true>([
this, &principal, mcc]() {
184 std::unique_lock<std::recursive_mutex> guard;
185 if (
auto sr =
reader->sharedResources().second) {
186 guard = std::unique_lock<std::recursive_mutex>(*sr);
199 std::unique_lock<std::recursive_mutex> guard;
200 if (
auto sr =
reader->sharedResources().second) {
201 guard = std::unique_lock<std::recursive_mutex>(*sr);
208 if (edp.get() !=
nullptr) {
213 <<
"Mergeable data types written to a Run must have the swap member function defined"
222 <<
"The product branch was dropped in the first run or lumi fragment and present in a later one"
224 <<
"The solution is to drop the branch on input. Or better do not create inconsistent files\n"
225 <<
"that need to be merged in the first place.\n";
232 <<
"The product branch was present in first run or lumi fragment and dropped in a later one"
234 <<
"The solution is to drop the branch on input. Or better do not create inconsistent files\n"
235 <<
"that need to be merged in the first place.\n";
248 bool skipCurrentProcess,
253 bool expected =
false;
257 if (prefetchRequested) {
258 auto workToDo = [
this, mcc, &principal,
token]() {
263 resolveProductImpl<true>([
this, &principal, mcc]() {
264 if (principal.branchType() !=
InEvent) {
267 if (
auto reader = principal.reader()) {
268 std::unique_lock<std::recursive_mutex> guard;
269 if (
auto sr =
reader->sharedResources().second) {
270 guard = std::unique_lock<std::recursive_mutex>(*sr);
286 if (
auto reader = principal.reader()) {
287 if (
auto shared_res =
reader->sharedResources().first) {
288 queue = &(shared_res->serialQueueChain());
292 queue->push(workToDo);
296 tbb::task::spawn(*
t);
302 if (not deleteEarly) {
316 bool skipCurrentProcess,
319 if (!skipCurrentProcess) {
321 return resolveProductImpl<false>([]() {
return; });
328 bool skipCurrentProcess,
332 if (not skipCurrentProcess) {
334 if (not mcc->parent().isAtEndTransition()) {
339 bool expected =
false;
343 if (
worker_ and prefetchRequested) {
349 auto waiting =
make_waiting_task(tbb::task::allocate_root(), [
this](std::exception_ptr
const* iException) {
350 if (
nullptr != iException) {
363 bool expected =
false;
370 if (not deleteEarly) {
388 bool skipCurrentProcess,
391 if (!skipCurrentProcess and
worker_) {
392 return resolveProductImpl<true>([
this, sra, mcc]() {
397 auto workCall = [
this, &parentContext, mcc]() {
414 std::ostringstream ost;
427 bool skipCurrentProcess,
431 if (skipCurrentProcess) {
435 bool expected =
false;
438 if (prefetchRequested) {
441 auto t =
make_waiting_task(tbb::task::allocate_root(), [
this](std::exception_ptr
const* iPtr) {
446 resolveProductImpl<true>([iPtr]() {
448 std::rethrow_exception(*iPtr);
466 if (not deleteEarly) {
514 <<
"It is actually of type " << typeID.className() <<
".\n";
531 auto presentStatus =
status();
602 <<
"AliasProductResolver::putProduct_() not implemented and should never be called.\n"
603 <<
"Contact a Framework developer\n";
609 <<
"AliasProductResolver::putOrMergeProduct_(std::unique_ptr<WrapperBase> edp, MergeableRunProductMetadata "
610 "const*) not implemented and should never be called.\n"
611 <<
"Contact a Framework developer\n";
616 : realProduct_(realProduct), productData_(
std::
move(
bd)), prefetchRequested_(
false) {
626 <<
"SwitchBaseProductResolver::connectTo() not implemented and should never be called.\n"
627 <<
"Contact a Framework developer\n";
635 if (
res.data() ==
nullptr)
651 <<
"SwitchBaseProductResolver::putOrMergeProduct_(std::unique_ptr<WrapperBase> edp, "
652 "MergeableRunProductMetadata const*) not implemented and should never be called.\n"
653 <<
"Contact a Framework developer\n";
668 if (not deleteEarly) {
686 bool skipCurrentProcess,
697 bool skipCurrentProcess,
701 if (skipCurrentProcess) {
709 bool expected =
false;
710 bool doPrefetchRequested =
prefetchRequested().compare_exchange_strong(expected,
true);
713 if (doPrefetchRequested) {
718 auto waiting =
make_waiting_task(tbb::task::allocate_root(), [
this](std::exception_ptr
const* iException) {
719 if (
nullptr != iException) {
734 <<
"This makes no sense for SwitchProducerProductResolver.\nContact a Framework developer";
739 bool expected =
false;
756 if (not deleteEarly) {
762 bool skipCurrentProcess,
770 bool skipCurrentProcess,
774 if (skipCurrentProcess) {
779 bool expected =
false;
780 bool doPrefetchRequested =
prefetchRequested().compare_exchange_strong(expected,
true);
783 if (doPrefetchRequested) {
788 auto waiting =
make_waiting_task(tbb::task::allocate_root(), [
this](std::exception_ptr
const* iException) {
789 if (
nullptr != iException) {
802 <<
"SwitchAliasProductResolver::putProduct() not implemented and should never be called.\n"
803 <<
"Contact a Framework developer\n";
822 <<
"ParentProcessProductResolver::putProduct_() not implemented and should never be called.\n"
823 <<
"Contact a Framework developer\n";
829 <<
"ParentProcessProductResolver::putOrMergeProduct_(std::unique_ptr<WrapperBase> edp, "
830 "MergeableRunProductMetadata const*) not implemented and should never be called.\n"
831 <<
"Contact a Framework developer\n";
851 <<
"ParentProcessProductResolver::throwNullRealProduct RealProduct pointer not set in this context.\n"
852 <<
"Contact a Framework developer\n";
856 std::vector<bool>
const& ambiguous,
858 : matchingHolders_(matchingHolders),
859 ambiguous_(ambiguous),
861 lastSkipCurrentCheckIndex_(lastCheckIndex_.
load()),
862 prefetchRequested_(
false),
863 skippingPrefetchRequested_(
false),
864 madeAtEnd_{madeAtEnd} {
865 assert(ambiguous_.size() == matchingHolders_.size());
870 bool skipCurrentProcess,
874 return productResolver->
resolveProduct(principal, skipCurrentProcess, sra, mcc);
878 bool skipCurrentProcess,
883 const unsigned int choiceSize =
ambiguous_.size();
886 if ((not skipCurrentProcess) and (
madeAtEnd_ and mcc)) {
887 skipCurrentProcess = not mcc->parent().isAtEndTransition();
897 return tryResolver(checkCacheIndex, principal, skipCurrentProcess, sra, mcc);
903 for (
unsigned int k : lookupProcessOrder) {
914 updateCacheIndex =
k;
926 bool skipCurrentProcess,
930 bool timeToMakeAtEnd =
true;
932 timeToMakeAtEnd = mcc->parent().isAtEndTransition();
936 if (not skipCurrentProcess and timeToMakeAtEnd) {
938 bool expected =
false;
942 if (prefetchRequested) {
948 bool expected =
false;
958 std::exception_ptr iExceptPtr)
const {
959 if (not iSkipCurrentProcess) {
972 unsigned int iResolverIndex,
976 bool iSkipCurrentProcess,
978 : resolver_(iResolver),
979 principal_(iPrincipal),
982 serviceToken_(iToken),
983 index_(iResolverIndex),
984 skipCurrentProcess_(iSkipCurrentProcess) {}
987 auto exceptPtr = exceptionPtr();
989 resolver_->prefetchFailed(index_, *principal_, skipCurrentProcess_, *exceptPtr);
991 if (not resolver_->dataValidFromResolver(index_, *principal_, skipCurrentProcess_)) {
992 resolver_->tryPrefetchResolverAsync(
993 index_ + 1, *principal_, skipCurrentProcess_, sra_, mcc_, serviceToken_);
1000 NoProcessProductResolver
const* resolver_;
1001 Principal
const* principal_;
1003 ModuleCallingContext
const* mcc_;
1005 unsigned int index_;
1006 bool skipCurrentProcess_;
1012 bool iSkipCurrentProcess,
1013 std::exception_ptr iExceptPtr)
const {
1014 std::vector<unsigned int>
const& lookupProcessOrder = principal.
lookupProcessOrder();
1015 auto k = lookupProcessOrder[iProcessingIndex];
1017 setCache(iSkipCurrentProcess,
k, iExceptPtr);
1022 bool iSkipCurrentProcess)
const {
1023 std::vector<unsigned int>
const& lookupProcessOrder = principal.
lookupProcessOrder();
1024 auto k = lookupProcessOrder[iProcessingIndex];
1028 setCache(iSkipCurrentProcess,
k,
nullptr);
1036 bool skipCurrentProcess,
1040 std::vector<unsigned int>
const& lookupProcessOrder = principal.
lookupProcessOrder();
1041 auto index = iProcessingIndex;
1043 const unsigned int choiceSize =
ambiguous_.size();
1045 while (
index < lookupProcessOrder.size()) {
1046 auto k = lookupProcessOrder[
index];
1058 auto task =
new (tbb::task::allocate_root())
1059 TryNextResolverWaitingTask(
this,
index, &principal, sra, mcc, skipCurrentProcess,
token);
1060 task->increment_ref_count();
1067 if (0 ==
task->decrement_ref_count()) {
1068 tbb::task::spawn(*
task);
1075 setCache(skipCurrentProcess, newCacheIndex,
nullptr);
1103 <<
"NoProcessProductResolver::unscheduledWasNotRun_() not implemented and should never be called.\n"
1104 <<
"Contact a Framework developer\n";
1109 <<
"NoProcessProductResolver::productUnavailable_() not implemented and should never be called.\n"
1110 <<
"Contact a Framework developer\n";
1115 <<
"NoProcessProductResolver::productResolved_() not implemented and should never be called.\n"
1116 <<
"Contact a Framework developer\n";
1121 <<
"NoProcessProductResolver::productWasDeleted_() not implemented and should never be called.\n"
1122 <<
"Contact a Framework developer\n";
1127 <<
"NoProcessProductResolver::productWasFetchedAndIsValid_() not implemented and should never be called.\n"
1128 <<
"Contact a Framework developer\n";
1133 <<
"NoProcessProductResolver::putProduct_() not implemented and should never be called.\n"
1134 <<
"Contact a Framework developer\n";
1140 <<
"NoProcessProductResolver::putOrMergeProduct_(std::unique_ptr<WrapperBase> edp, MergeableRunProductMetadata "
1141 "const*) not implemented and should never be called.\n"
1142 <<
"Contact a Framework developer\n";
1147 <<
"NoProcessProductResolver::branchDescription_() not implemented and should never be called.\n"
1148 <<
"Contact a Framework developer\n";
1153 <<
"NoProcessProductResolver::resetBranchDescription_() not implemented and should never be called.\n"
1154 <<
"Contact a Framework developer\n";
1159 <<
"NoProcessProductResolver::provenance_() not implemented and should never be called.\n"
1160 <<
"Contact a Framework developer\n";
1165 <<
"NoProcessProductResolver::connectTo() not implemented and should never be called.\n"
1166 <<
"Contact a Framework developer\n";
1172 bool skipCurrentProcess,
1178 ->resolveProduct(principal, skipCurrentProcess, sra, mcc);
1183 bool skipCurrentProcess,
1188 ->prefetchAsync(waitTask, principal, skipCurrentProcess,
token, sra, mcc);
1203 <<
"SingleChoiceNoProcessProductResolver::unscheduledWasNotRun_() not implemented and should never be called.\n"
1204 <<
"Contact a Framework developer\n";
1209 <<
"SingleChoiceNoProcessProductResolver::productUnavailable_() not implemented and should never be called.\n"
1210 <<
"Contact a Framework developer\n";
1215 <<
"SingleChoiceNoProcessProductResolver::productResolved_() not implemented and should never be called.\n"
1216 <<
"Contact a Framework developer\n";
1221 <<
"SingleChoiceNoProcessProductResolver::productWasDeleted_() not implemented and should never be called.\n"
1222 <<
"Contact a Framework developer\n";
1227 "implemented and should never be called.\n"
1228 <<
"Contact a Framework developer\n";
1233 <<
"SingleChoiceNoProcessProductResolver::putProduct_() not implemented and should never be called.\n"
1234 <<
"Contact a Framework developer\n";
1240 <<
"SingleChoiceNoProcessProductResolver::putOrMergeProduct_(std::unique_ptr<WrapperBase> edp, "
1241 "MergeableRunProductMetadata const*) not implemented and should never be called.\n"
1242 <<
"Contact a Framework developer\n";
1247 <<
"SingleChoiceNoProcessProductResolver::branchDescription_() not implemented and should never be called.\n"
1248 <<
"Contact a Framework developer\n";
1253 "implemented and should never be called.\n"
1254 <<
"Contact a Framework developer\n";
1259 <<
"SingleChoiceNoProcessProductResolver::provenance_() not implemented and should never be called.\n"
1260 <<
"Contact a Framework developer\n";
1265 <<
"SingleChoiceNoProcessProductResolver::connectTo() not implemented and should never be called.\n"
1266 <<
"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
EventTransitionInfo const & eventTransitionInfo() const
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
void doWorkAsync(WaitingTask *, typename T::TransitionInfoType const &, ServiceToken const &, StreamID, ParentContext const &, typename T::Context const *)
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
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
Log< level::Warning, false > LogWarning
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
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 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 doWork(typename T::TransitionInfoType const &, StreamID, ParentContext const &, typename T::Context const *)
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
Log< level::Error, false > LogError
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
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
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)