CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
List of all members | Public Types | Public Member Functions | Private Member Functions | Private Attributes
edm::NoProcessProductResolver Class Reference

#include <ProductResolvers.h>

Inheritance diagram for edm::NoProcessProductResolver:
edm::ProductResolverBase

Public Types

typedef
ProducedProductResolver::ProductStatus 
ProductStatus
 

Public Member Functions

virtual void connectTo (ProductResolverBase const &iOther, Principal const *) overridefinal
 
bool dataValidFromResolver (unsigned int iProcessingIndex, Principal const &principal, bool iSkipCurrentProcess) const
 
 NoProcessProductResolver (std::vector< ProductResolverIndex > const &matchingHolders, std::vector< bool > const &ambiguous)
 
void prefetchFailed (unsigned int iProcessingIndex, Principal const &principal, bool iSkipCurrentProcess, std::exception_ptr iExceptPtr) const
 
void tryPrefetchResolverAsync (unsigned int iProcessingIndex, Principal const &principal, bool skipCurrentProcess, SharedResourcesAcquirer *sra, ModuleCallingContext const *mcc, ServiceToken token) const
 
- Public Member Functions inherited from edm::ProductResolverBase
BranchDescription const & branchDescription () const
 
std::string const & moduleLabel () const
 
ProductResolverBaseoperator= (ProductResolverBase const &)=delete
 
void prefetchAsync (WaitingTask *waitTask, Principal const &principal, bool skipCurrentProcess, SharedResourcesAcquirer *sra, ModuleCallingContext const *mcc) const
 
std::string const & processName () const
 
ProductID const & productID () const
 
std::string const & productInstanceName () const
 
ProductProvenance const * productProvenancePtr () const
 
bool productResolved () const
 
 ProductResolverBase ()
 
 ProductResolverBase (ProductResolverBase const &)=delete
 
TypeID productType () const
 
bool productUnavailable () const
 
bool productWasDeleted () const
 
bool productWasFetchedAndIsValid (bool iSkipCurrentProcess) const
 
Provenance const * provenance () const
 
bool provenanceAvailable () const
 
void putOrMergeProduct (std::unique_ptr< WrapperBase > edp) const
 
void putProduct (std::unique_ptr< WrapperBase > edp) const
 
void resetBranchDescription (std::shared_ptr< BranchDescription const > bd)
 
virtual void resetFailedFromThisProcess ()
 
void resetProductData ()
 
std::string const & resolvedModuleLabel () const
 
Resolution resolveProduct (Principal const &principal, bool skipCurrentProcess, SharedResourcesAcquirer *sra, ModuleCallingContext const *mcc) const
 
void retrieveAndMerge (Principal const &principal) const
 
void setProcessHistory (ProcessHistory const &ph)
 
void setProvenance (ProductProvenanceRetriever const *provRetriever, ProcessHistory const &ph, ProductID const &pid)
 
virtual void setupUnscheduled (UnscheduledConfigurator const &)
 
bool singleProduct () const
 
StableProvenance const * stableProvenance () const
 
void unsafe_deleteProduct () const
 
bool unscheduledWasNotRun () const
 
void write (std::ostream &os) const
 
virtual ~ProductResolverBase ()
 

Private Member Functions

virtual BranchDescription const & branchDescription_ () const override
 
virtual void prefetchAsync_ (WaitingTask *waitTask, Principal const &principal, bool skipCurrentProcess, SharedResourcesAcquirer *sra, ModuleCallingContext const *mcc) const override
 
virtual ProductProvenance const * productProvenancePtr_ () const override
 
virtual bool productResolved_ () const overridefinal
 
virtual bool productUnavailable_ () const override
 
virtual bool productWasDeleted_ () const override
 
virtual bool productWasFetchedAndIsValid_ (bool iSkipCurrentProcess) const override
 
virtual Provenance const * provenance_ () const override
 
virtual void putOrMergeProduct_ (std::unique_ptr< WrapperBase > prod) const overridefinal
 
virtual void putProduct_ (std::unique_ptr< WrapperBase > edp) const override
 
virtual void resetBranchDescription_ (std::shared_ptr< BranchDescription const > bd) override
 
virtual void resetProductData_ (bool deleteEarly) override
 
virtual std::string const & resolvedModuleLabel_ () const override
 
virtual Resolution resolveProduct_ (Principal const &principal, bool skipCurrentProcess, SharedResourcesAcquirer *sra, ModuleCallingContext const *mcc) const override
 
void setCache (bool skipCurrentProcess, ProductResolverIndex index, std::exception_ptr exceptionPtr) const
 
virtual void setProcessHistory_ (ProcessHistory const &ph) override
 
virtual void setProvenance_ (ProductProvenanceRetriever const *provRetriever, ProcessHistory const &ph, ProductID const &pid) override
 
virtual bool singleProduct_ () const override
 
Resolution tryResolver (unsigned int index, Principal const &principal, bool skipCurrentProcess, SharedResourcesAcquirer *sra, ModuleCallingContext const *mcc) const
 
virtual bool unscheduledWasNotRun_ () const override
 
unsigned int unsetIndexValue () const
 

Private Attributes

std::vector< bool > ambiguous_
 
std::atomic< unsigned int > lastCheckIndex_
 
std::atomic< unsigned int > lastSkipCurrentCheckIndex_
 
std::vector< ProductResolverIndexmatchingHolders_
 
std::atomic< bool > prefetchRequested_
 
std::atomic< bool > skippingPrefetchRequested_
 
WaitingTaskList skippingWaitingTasks_
 
WaitingTaskList waitingTasks_
 

Detailed Description

Definition at line 298 of file ProductResolvers.h.

Member Typedef Documentation

Definition at line 300 of file ProductResolvers.h.

Constructor & Destructor Documentation

edm::NoProcessProductResolver::NoProcessProductResolver ( std::vector< ProductResolverIndex > const &  matchingHolders,
std::vector< bool > const &  ambiguous 
)

Definition at line 631 of file ProductResolvers.cc.

References ambiguous_, assert(), and matchingHolders_.

632  :
633  matchingHolders_(matchingHolders),
634  ambiguous_(ambiguous),
637  prefetchRequested_(false),
639  assert(ambiguous_.size() == matchingHolders_.size());
640  }
assert(m_qm.get())
static unsigned int kUnsetOffset
std::atomic< unsigned int > lastSkipCurrentCheckIndex_
std::atomic< bool > prefetchRequested_
std::atomic< unsigned int > lastCheckIndex_
std::atomic< bool > skippingPrefetchRequested_
std::vector< bool > ambiguous_
std::vector< ProductResolverIndex > matchingHolders_

Member Function Documentation

BranchDescription const & edm::NoProcessProductResolver::branchDescription_ ( ) const
overrideprivatevirtual

Implements edm::ProductResolverBase.

Definition at line 932 of file ProductResolvers.cc.

References Exception, and edm::errors::LogicError.

932  {
934  << "NoProcessProductResolver::branchDescription_() not implemented and should never be called.\n"
935  << "Contact a Framework developer\n";
936  }
void edm::NoProcessProductResolver::connectTo ( ProductResolverBase const &  iOther,
Principal const *   
)
finaloverridevirtual

Implements edm::ProductResolverBase.

Definition at line 950 of file ProductResolvers.cc.

References Exception, and edm::errors::LogicError.

950  {
952  << "NoProcessProductResolver::connectTo() not implemented and should never be called.\n"
953  << "Contact a Framework developer\n";
954 
955  }
bool edm::NoProcessProductResolver::dataValidFromResolver ( unsigned int  iProcessingIndex,
Principal const &  principal,
bool  iSkipCurrentProcess 
) const

Definition at line 793 of file ProductResolvers.cc.

References edm::Principal::getProductResolverByIndex(), relval_2017::k, edm::Principal::lookupProcessOrder(), matchingHolders_, edm::ProductResolverBase::productWasFetchedAndIsValid(), and setCache().

795  {
796  std::vector<unsigned int> const& lookupProcessOrder = principal.lookupProcessOrder();
797  auto k = lookupProcessOrder[iProcessingIndex];
798  ProductResolverBase const* productResolver = principal.getProductResolverByIndex(matchingHolders_[k]);
799 
800  if(productResolver->productWasFetchedAndIsValid(iSkipCurrentProcess)) {
801 
802  setCache(iSkipCurrentProcess, k, nullptr);
803  return true;
804  }
805  return false;
806  }
void setCache(bool skipCurrentProcess, ProductResolverIndex index, std::exception_ptr exceptionPtr) const
std::vector< ProductResolverIndex > matchingHolders_
void edm::NoProcessProductResolver::prefetchAsync_ ( WaitingTask waitTask,
Principal const &  principal,
bool  skipCurrentProcess,
SharedResourcesAcquirer sra,
ModuleCallingContext const *  mcc 
) const
overrideprivatevirtual

Implements edm::ProductResolverBase.

Definition at line 698 of file ProductResolvers.cc.

References edm::WaitingTaskList::add(), edm::ServiceRegistry::instance(), prefetchRequested_, skippingPrefetchRequested_, skippingWaitingTasks_, tryPrefetchResolverAsync(), and waitingTasks_.

702  {
703  if(not skipCurrentProcess) {
704  waitingTasks_.add(waitTask);
705 
706  bool expected = false;
707  if( prefetchRequested_.compare_exchange_strong(expected,true)) {
708  //we are the first thread to request
709  tryPrefetchResolverAsync(0, principal, skipCurrentProcess, sra, mcc, ServiceRegistry::instance().presentToken());
710  }
711  } else {
712  skippingWaitingTasks_.add(waitTask);
713  bool expected = false;
714  if( skippingPrefetchRequested_.compare_exchange_strong(expected,true)) {
715  //we are the first thread to request
716  tryPrefetchResolverAsync(0, principal, skipCurrentProcess, sra, mcc, ServiceRegistry::instance().presentToken());
717  }
718  }
719  }
void add(WaitingTask *)
Adds task to the waiting list.
static ServiceRegistry & instance()
std::atomic< bool > prefetchRequested_
std::atomic< bool > skippingPrefetchRequested_
void tryPrefetchResolverAsync(unsigned int iProcessingIndex, Principal const &principal, bool skipCurrentProcess, SharedResourcesAcquirer *sra, ModuleCallingContext const *mcc, ServiceToken token) const
void edm::NoProcessProductResolver::prefetchFailed ( unsigned int  iProcessingIndex,
Principal const &  principal,
bool  iSkipCurrentProcess,
std::exception_ptr  iExceptPtr 
) const

Definition at line 781 of file ProductResolvers.cc.

References relval_2017::k, edm::Principal::lookupProcessOrder(), and setCache().

784  {
785  std::vector<unsigned int> const& lookupProcessOrder = principal.lookupProcessOrder();
786  auto k = lookupProcessOrder[iProcessingIndex];
787 
788  setCache(iSkipCurrentProcess, k, iExceptPtr);
789  }
void setCache(bool skipCurrentProcess, ProductResolverIndex index, std::exception_ptr exceptionPtr) const
ProductProvenance const * edm::NoProcessProductResolver::productProvenancePtr_ ( ) const
overrideprivatevirtual

Implements edm::ProductResolverBase.

Definition at line 870 of file ProductResolvers.cc.

870  {
871  return nullptr;
872  }
bool edm::NoProcessProductResolver::productResolved_ ( ) const
finaloverrideprivatevirtual

Implements edm::ProductResolverBase.

Definition at line 902 of file ProductResolvers.cc.

References Exception, and edm::errors::LogicError.

902  {
904  << "NoProcessProductResolver::productResolved_() not implemented and should never be called.\n"
905  << "Contact a Framework developer\n";
906  }
bool edm::NoProcessProductResolver::productUnavailable_ ( ) const
overrideprivatevirtual

Implements edm::ProductResolverBase.

Definition at line 896 of file ProductResolvers.cc.

References Exception, and edm::errors::LogicError.

896  {
898  << "NoProcessProductResolver::productUnavailable_() not implemented and should never be called.\n"
899  << "Contact a Framework developer\n";
900  }
bool edm::NoProcessProductResolver::productWasDeleted_ ( ) const
overrideprivatevirtual

Implements edm::ProductResolverBase.

Definition at line 908 of file ProductResolvers.cc.

References Exception, and edm::errors::LogicError.

908  {
910  << "NoProcessProductResolver::productWasDeleted_() not implemented and should never be called.\n"
911  << "Contact a Framework developer\n";
912  }
bool edm::NoProcessProductResolver::productWasFetchedAndIsValid_ ( bool  iSkipCurrentProcess) const
overrideprivatevirtual

Implements edm::ProductResolverBase.

Definition at line 914 of file ProductResolvers.cc.

References Exception, and edm::errors::LogicError.

914  {
916  << "NoProcessProductResolver::productWasFetchedAndIsValid_() not implemented and should never be called.\n"
917  << "Contact a Framework developer\n";
918  }
Provenance const * edm::NoProcessProductResolver::provenance_ ( ) const
overrideprivatevirtual

Implements edm::ProductResolverBase.

Definition at line 944 of file ProductResolvers.cc.

References Exception, and edm::errors::LogicError.

944  {
946  << "NoProcessProductResolver::provenance_() not implemented and should never be called.\n"
947  << "Contact a Framework developer\n";
948  }
void edm::NoProcessProductResolver::putOrMergeProduct_ ( std::unique_ptr< WrapperBase prod) const
finaloverrideprivatevirtual

Implements edm::ProductResolverBase.

Definition at line 926 of file ProductResolvers.cc.

References Exception, and edm::errors::LogicError.

926  {
928  << "NoProcessProductResolver::putOrMergeProduct_(std::unique_ptr<WrapperBase> edp) not implemented and should never be called.\n"
929  << "Contact a Framework developer\n";
930  }
void edm::NoProcessProductResolver::putProduct_ ( std::unique_ptr< WrapperBase edp) const
overrideprivatevirtual

Implements edm::ProductResolverBase.

Definition at line 920 of file ProductResolvers.cc.

References Exception, and edm::errors::LogicError.

920  {
922  << "NoProcessProductResolver::putProduct_() not implemented and should never be called.\n"
923  << "Contact a Framework developer\n";
924  }
void edm::NoProcessProductResolver::resetBranchDescription_ ( std::shared_ptr< BranchDescription const >  bd)
overrideprivatevirtual

Implements edm::ProductResolverBase.

Definition at line 938 of file ProductResolvers.cc.

References Exception, and edm::errors::LogicError.

938  {
940  << "NoProcessProductResolver::resetBranchDescription_() not implemented and should never be called.\n"
941  << "Contact a Framework developer\n";
942  }
void edm::NoProcessProductResolver::resetProductData_ ( bool  deleteEarly)
overrideprivatevirtual

Implements edm::ProductResolverBase.

Definition at line 876 of file ProductResolvers.cc.

References lastCheckIndex_, lastSkipCurrentCheckIndex_, prefetchRequested_, edm::WaitingTaskList::reset(), skippingPrefetchRequested_, skippingWaitingTasks_, unsetIndexValue(), and waitingTasks_.

876  {
877  const auto resetValue = unsetIndexValue();
878  lastCheckIndex_ = resetValue;
879  lastSkipCurrentCheckIndex_ = resetValue;
880  prefetchRequested_ = false;
884  }
unsigned int unsetIndexValue() const
void reset()
Resets access to the resource so that added tasks will wait.
std::atomic< unsigned int > lastSkipCurrentCheckIndex_
std::atomic< bool > prefetchRequested_
std::atomic< unsigned int > lastCheckIndex_
std::atomic< bool > skippingPrefetchRequested_
virtual std::string const& edm::NoProcessProductResolver::resolvedModuleLabel_ ( ) const
inlineoverrideprivatevirtual

Implements edm::ProductResolverBase.

Definition at line 344 of file ProductResolvers.h.

References edm::ProductResolverBase::moduleLabel().

344 {return moduleLabel();}
std::string const & moduleLabel() const
ProductResolverBase::Resolution edm::NoProcessProductResolver::resolveProduct_ ( Principal const &  principal,
bool  skipCurrentProcess,
SharedResourcesAcquirer sra,
ModuleCallingContext const *  mcc 
) const
overrideprivatevirtual

Implements edm::ProductResolverBase.

Definition at line 654 of file ProductResolvers.cc.

References ambiguous_, assert(), relval_2017::k, kAmbiguousOffset, kMissingOffset, kUnsetOffset, lastCheckIndex_, lastSkipCurrentCheckIndex_, edm::Principal::lookupProcessOrder(), edm::ProductResolverBase::Resolution::makeAmbiguous(), matchingHolders_, edm::ProductResolverIndexInvalid, dtDQMClient_cfg::resolution, Resolution, and tryResolver().

657  {
658  //See if we've already cached which Resolver we should call or if
659  // we know it is ambiguous
660  const unsigned int choiceSize = ambiguous_.size();
661  {
662  unsigned int checkCacheIndex = skipCurrentProcess? lastSkipCurrentCheckIndex_.load() : lastCheckIndex_.load();
663  if( checkCacheIndex != choiceSize +kUnsetOffset) {
664  if (checkCacheIndex == choiceSize+kAmbiguousOffset) {
666  } else if(checkCacheIndex == choiceSize+kMissingOffset) {
667  return Resolution(nullptr);
668  }
669  return tryResolver(checkCacheIndex, principal, skipCurrentProcess,
670  sra,mcc);
671  }
672  }
673 
674  std::atomic<unsigned int>& updateCacheIndex = skipCurrentProcess? lastSkipCurrentCheckIndex_ : lastCheckIndex_;
675 
676  std::vector<unsigned int> const& lookupProcessOrder = principal.lookupProcessOrder();
677  for(unsigned int k : lookupProcessOrder) {
678  assert(k < ambiguous_.size());
679  if(k == 0) break; // Done
680  if(ambiguous_[k]) {
681  updateCacheIndex = choiceSize + kAmbiguousOffset;
683  }
685  auto resolution = tryResolver(k,principal, skipCurrentProcess, sra,mcc);
686  if(resolution.data() != nullptr) {
687  updateCacheIndex = k;
688  return resolution;
689  }
690  }
691  }
692 
693  updateCacheIndex = choiceSize + kMissingOffset;
694  return Resolution(nullptr);
695  }
assert(m_qm.get())
Resolution tryResolver(unsigned int index, Principal const &principal, bool skipCurrentProcess, SharedResourcesAcquirer *sra, ModuleCallingContext const *mcc) const
static unsigned int kUnsetOffset
static unsigned int kMissingOffset
std::atomic< unsigned int > lastSkipCurrentCheckIndex_
std::atomic< unsigned int > lastCheckIndex_
std::vector< bool > ambiguous_
static unsigned int kAmbiguousOffset
std::vector< ProductResolverIndex > matchingHolders_
void edm::NoProcessProductResolver::setCache ( bool  skipCurrentProcess,
ProductResolverIndex  index,
std::exception_ptr  exceptionPtr 
) const
private

Definition at line 721 of file ProductResolvers.cc.

References edm::WaitingTaskList::doneWaiting(), lastCheckIndex_, lastSkipCurrentCheckIndex_, skippingWaitingTasks_, and waitingTasks_.

Referenced by dataValidFromResolver(), prefetchFailed(), and tryPrefetchResolverAsync().

723  {
724  if( not iSkipCurrentProcess) {
725  lastCheckIndex_ = iIndex;
726  waitingTasks_.doneWaiting(iExceptPtr);
727  } else {
730  }
731  }
void doneWaiting(std::exception_ptr iPtr)
Signals that the resource is now available and tasks should be spawned.
std::atomic< unsigned int > lastSkipCurrentCheckIndex_
std::atomic< unsigned int > lastCheckIndex_
void edm::NoProcessProductResolver::setProcessHistory_ ( ProcessHistory const &  ph)
overrideprivatevirtual

Implements edm::ProductResolverBase.

Definition at line 867 of file ProductResolvers.cc.

867  {
868  }
void edm::NoProcessProductResolver::setProvenance_ ( ProductProvenanceRetriever const *  provRetriever,
ProcessHistory const &  ph,
ProductID const &  pid 
)
overrideprivatevirtual

Implements edm::ProductResolverBase.

Definition at line 864 of file ProductResolvers.cc.

864  {
865  }
bool edm::NoProcessProductResolver::singleProduct_ ( ) const
overrideprivatevirtual

Implements edm::ProductResolverBase.

Definition at line 886 of file ProductResolvers.cc.

886  {
887  return false;
888  }
void edm::NoProcessProductResolver::tryPrefetchResolverAsync ( unsigned int  iProcessingIndex,
Principal const &  principal,
bool  skipCurrentProcess,
SharedResourcesAcquirer sra,
ModuleCallingContext const *  mcc,
ServiceToken  token 
) const

Definition at line 810 of file ProductResolvers.cc.

References ambiguous_, assert(), edm::Principal::getProductResolverByIndex(), cmsHarvester::index, relval_2017::k, kAmbiguousOffset, kMissingOffset, edm::Principal::lookupProcessOrder(), matchingHolders_, edm::ProductResolverBase::prefetchAsync(), edm::ProductResolverIndexInvalid, and setCache().

Referenced by prefetchAsync_().

815  {
816  std::vector<unsigned int> const& lookupProcessOrder = principal.lookupProcessOrder();
817  auto index = iProcessingIndex;
818 
819  const unsigned int choiceSize = ambiguous_.size();
820  unsigned int newCacheIndex = choiceSize + kMissingOffset;
821  while(index < lookupProcessOrder.size()) {
822  auto k = lookupProcessOrder[index];
823  if(k==0) {
824  break;
825  }
826  assert(k < ambiguous_.size());
827  if(ambiguous_[k]) {
828  newCacheIndex = choiceSize + kAmbiguousOffset;
829  break;
830  }
832  //make new task
833 
834  auto task = new (tbb::task::allocate_root()) TryNextResolverWaitingTask(
835  this,
836  index,
837  &principal,
838  sra,
839  mcc,
840  skipCurrentProcess,
841  token
842  );
843  task->increment_ref_count();
844  ProductResolverBase const* productResolver = principal.getProductResolverByIndex(matchingHolders_[k]);
845 
846  //Make sure the Services are available on this thread
847  ServiceRegistry::Operate guard(token);
848 
849  productResolver->prefetchAsync(task,
850  principal,
851  skipCurrentProcess,
852  sra, mcc);
853  if(0 == task->decrement_ref_count()) {
854  tbb::task::spawn(*task);
855  }
856  return;
857  }
858  ++index;
859  }
860  //data product unavailable
861  setCache(skipCurrentProcess, newCacheIndex, nullptr);
862  }
void setCache(bool skipCurrentProcess, ProductResolverIndex index, std::exception_ptr exceptionPtr) const
assert(m_qm.get())
static unsigned int kMissingOffset
std::vector< bool > ambiguous_
static unsigned int kAmbiguousOffset
std::vector< ProductResolverIndex > matchingHolders_
ProductResolverBase::Resolution edm::NoProcessProductResolver::tryResolver ( unsigned int  index,
Principal const &  principal,
bool  skipCurrentProcess,
SharedResourcesAcquirer sra,
ModuleCallingContext const *  mcc 
) const
private

Definition at line 643 of file ProductResolvers.cc.

References edm::Principal::getProductResolverByIndex(), matchingHolders_, and edm::ProductResolverBase::resolveProduct().

Referenced by resolveProduct_().

647  {
648  ProductResolverBase const* productResolver = principal.getProductResolverByIndex(matchingHolders_[index]);
649  return productResolver->resolveProduct(principal, skipCurrentProcess, sra, mcc);
650  }
std::vector< ProductResolverIndex > matchingHolders_
bool edm::NoProcessProductResolver::unscheduledWasNotRun_ ( ) const
overrideprivatevirtual

Implements edm::ProductResolverBase.

Definition at line 890 of file ProductResolvers.cc.

References Exception, and edm::errors::LogicError.

890  {
892  << "NoProcessProductResolver::unscheduledWasNotRun_() not implemented and should never be called.\n"
893  << "Contact a Framework developer\n";
894  }
unsigned int edm::NoProcessProductResolver::unsetIndexValue ( ) const
inlineprivate

Definition at line 874 of file ProductResolvers.cc.

References ambiguous_, and kUnsetOffset.

Referenced by resetProductData_().

874 { return ambiguous_.size()+kUnsetOffset; }
static unsigned int kUnsetOffset
std::vector< bool > ambiguous_

Member Data Documentation

std::vector<bool> edm::NoProcessProductResolver::ambiguous_
private
std::atomic<unsigned int> edm::NoProcessProductResolver::lastCheckIndex_
mutableprivate

Definition at line 363 of file ProductResolvers.h.

Referenced by resetProductData_(), resolveProduct_(), and setCache().

std::atomic<unsigned int> edm::NoProcessProductResolver::lastSkipCurrentCheckIndex_
mutableprivate

Definition at line 364 of file ProductResolvers.h.

Referenced by resetProductData_(), resolveProduct_(), and setCache().

std::vector<ProductResolverIndex> edm::NoProcessProductResolver::matchingHolders_
private
std::atomic<bool> edm::NoProcessProductResolver::prefetchRequested_
mutableprivate

Definition at line 365 of file ProductResolvers.h.

Referenced by prefetchAsync_(), and resetProductData_().

std::atomic<bool> edm::NoProcessProductResolver::skippingPrefetchRequested_
mutableprivate

Definition at line 366 of file ProductResolvers.h.

Referenced by prefetchAsync_(), and resetProductData_().

WaitingTaskList edm::NoProcessProductResolver::skippingWaitingTasks_
mutableprivate

Definition at line 362 of file ProductResolvers.h.

Referenced by prefetchAsync_(), resetProductData_(), and setCache().

WaitingTaskList edm::NoProcessProductResolver::waitingTasks_
mutableprivate

Definition at line 361 of file ProductResolvers.h.

Referenced by prefetchAsync_(), resetProductData_(), and setCache().