CMS 3D CMS Logo

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

void connectTo (ProductResolverBase const &iOther, Principal const *) final
 
bool dataValidFromResolver (unsigned int iProcessingIndex, Principal const &principal, bool iSkipCurrentProcess) const
 
 NoProcessProductResolver (std::vector< ProductResolverIndex > const &matchingHolders, std::vector< bool > const &ambiguous, bool madeAtEnd)
 
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, ServiceToken const &token, 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, MergeableRunProductMetadata const *mergeableRunProductMetadata=nullptr) const
 
void putProduct (std::unique_ptr< WrapperBase > edp) const
 
void resetBranchDescription (std::shared_ptr< BranchDescription const > bd)
 
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, MergeableRunProductMetadata const *mergeableRunProductMetadata) const
 
void setMergeableRunProductMetadata (MergeableRunProductMetadata const *mrpm)
 
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

BranchDescription const & branchDescription_ () 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 override
 
bool productResolved_ () const final
 
bool productUnavailable_ () const override
 
bool productWasDeleted_ () const override
 
bool productWasFetchedAndIsValid_ (bool iSkipCurrentProcess) const override
 
Provenance const * provenance_ () const override
 
void putOrMergeProduct_ (std::unique_ptr< WrapperBase > prod, MergeableRunProductMetadata const *mergeableRunProductMetadata) const final
 
void putProduct_ (std::unique_ptr< WrapperBase > edp) const override
 
void resetBranchDescription_ (std::shared_ptr< BranchDescription const > bd) override
 
void resetProductData_ (bool deleteEarly) override
 
std::string const & resolvedModuleLabel_ () const override
 
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
 
void setProcessHistory_ (ProcessHistory const &ph) override
 
void setProvenance_ (ProductProvenanceRetriever const *provRetriever, ProcessHistory const &ph, ProductID const &pid) override
 
bool singleProduct_ () const override
 
Resolution tryResolver (unsigned int index, Principal const &principal, bool skipCurrentProcess, SharedResourcesAcquirer *sra, ModuleCallingContext const *mcc) const
 
bool unscheduledWasNotRun_ () const override
 
unsigned int unsetIndexValue () const
 

Private Attributes

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

Detailed Description

Definition at line 316 of file ProductResolvers.h.

Member Typedef Documentation

Definition at line 318 of file ProductResolvers.h.

Constructor & Destructor Documentation

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

Definition at line 711 of file ProductResolvers.cc.

References ambiguous_, and matchingHolders_.

Referenced by edm::ParentProcessProductResolver::throwNullRealProduct().

713  :
714  matchingHolders_(matchingHolders),
715  ambiguous_(ambiguous),
718  prefetchRequested_(false),
720  madeAtEnd_{madeAtEnd}
721  {
722  assert(ambiguous_.size() == matchingHolders_.size());
723  }
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 1027 of file ProductResolvers.cc.

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

1027  {
1029  << "NoProcessProductResolver::branchDescription_() not implemented and should never be called.\n"
1030  << "Contact a Framework developer\n";
1031  }
void edm::NoProcessProductResolver::connectTo ( ProductResolverBase const &  iOther,
Principal const *   
)
finalvirtual

Implements edm::ProductResolverBase.

Definition at line 1045 of file ProductResolvers.cc.

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

1045  {
1047  << "NoProcessProductResolver::connectTo() not implemented and should never be called.\n"
1048  << "Contact a Framework developer\n";
1049 
1050  }
bool edm::NoProcessProductResolver::dataValidFromResolver ( unsigned int  iProcessingIndex,
Principal const &  principal,
bool  iSkipCurrentProcess 
) const

Definition at line 887 of file ProductResolvers.cc.

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

889  {
890  std::vector<unsigned int> const& lookupProcessOrder = principal.lookupProcessOrder();
891  auto k = lookupProcessOrder[iProcessingIndex];
892  ProductResolverBase const* productResolver = principal.getProductResolverByIndex(matchingHolders_[k]);
893 
894  if(productResolver->productWasFetchedAndIsValid(iSkipCurrentProcess)) {
895 
896  setCache(iSkipCurrentProcess, k, nullptr);
897  return true;
898  }
899  return false;
900  }
void setCache(bool skipCurrentProcess, ProductResolverIndex index, std::exception_ptr exceptionPtr) const
def principal(options)
int k[5][pyjets_maxn]
std::vector< ProductResolverIndex > matchingHolders_
void edm::NoProcessProductResolver::prefetchAsync_ ( WaitingTask waitTask,
Principal const &  principal,
bool  skipCurrentProcess,
ServiceToken const &  token,
SharedResourcesAcquirer sra,
ModuleCallingContext const *  mcc 
) const
overrideprivatevirtual

Implements edm::ProductResolverBase.

Definition at line 785 of file ProductResolvers.cc.

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

790  {
791  bool timeToMakeAtEnd = true;
792  if(madeAtEnd_ and mcc) {
793  timeToMakeAtEnd = mcc->parent().isAtEndTransition();
794  }
795 
796  //If timeToMakeAtEnd is false, then it is equivalent to skipping the current process
797  if(not skipCurrentProcess and timeToMakeAtEnd) {
798  waitingTasks_.add(waitTask);
799 
800  bool expected = false;
801  if( prefetchRequested_.compare_exchange_strong(expected,true)) {
802  //we are the first thread to request
803  tryPrefetchResolverAsync(0, principal, false, sra, mcc, token);
804  }
805  } else {
806  skippingWaitingTasks_.add(waitTask);
807  bool expected = false;
808  if( skippingPrefetchRequested_.compare_exchange_strong(expected,true)) {
809  //we are the first thread to request
810  tryPrefetchResolverAsync(0, principal, true, sra, mcc, token);
811  }
812  }
813  }
void add(WaitingTask *)
Adds task to the waiting list.
def principal(options)
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 875 of file ProductResolvers.cc.

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

878  {
879  std::vector<unsigned int> const& lookupProcessOrder = principal.lookupProcessOrder();
880  auto k = lookupProcessOrder[iProcessingIndex];
881 
882  setCache(iSkipCurrentProcess, k, iExceptPtr);
883  }
void setCache(bool skipCurrentProcess, ProductResolverIndex index, std::exception_ptr exceptionPtr) const
def principal(options)
int k[5][pyjets_maxn]
ProductProvenance const * edm::NoProcessProductResolver::productProvenancePtr_ ( ) const
overrideprivatevirtual

Implements edm::ProductResolverBase.

Definition at line 965 of file ProductResolvers.cc.

965  {
966  return nullptr;
967  }
bool edm::NoProcessProductResolver::productResolved_ ( ) const
finalprivatevirtual

Implements edm::ProductResolverBase.

Definition at line 997 of file ProductResolvers.cc.

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

997  {
999  << "NoProcessProductResolver::productResolved_() not implemented and should never be called.\n"
1000  << "Contact a Framework developer\n";
1001  }
bool edm::NoProcessProductResolver::productUnavailable_ ( ) const
overrideprivatevirtual

Implements edm::ProductResolverBase.

Definition at line 991 of file ProductResolvers.cc.

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

991  {
993  << "NoProcessProductResolver::productUnavailable_() not implemented and should never be called.\n"
994  << "Contact a Framework developer\n";
995  }
bool edm::NoProcessProductResolver::productWasDeleted_ ( ) const
overrideprivatevirtual

Implements edm::ProductResolverBase.

Definition at line 1003 of file ProductResolvers.cc.

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

1003  {
1005  << "NoProcessProductResolver::productWasDeleted_() not implemented and should never be called.\n"
1006  << "Contact a Framework developer\n";
1007  }
bool edm::NoProcessProductResolver::productWasFetchedAndIsValid_ ( bool  iSkipCurrentProcess) const
overrideprivatevirtual

Implements edm::ProductResolverBase.

Definition at line 1009 of file ProductResolvers.cc.

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

1009  {
1011  << "NoProcessProductResolver::productWasFetchedAndIsValid_() not implemented and should never be called.\n"
1012  << "Contact a Framework developer\n";
1013  }
Provenance const * edm::NoProcessProductResolver::provenance_ ( ) const
overrideprivatevirtual

Implements edm::ProductResolverBase.

Definition at line 1039 of file ProductResolvers.cc.

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

1039  {
1041  << "NoProcessProductResolver::provenance_() not implemented and should never be called.\n"
1042  << "Contact a Framework developer\n";
1043  }
void edm::NoProcessProductResolver::putOrMergeProduct_ ( std::unique_ptr< WrapperBase prod,
MergeableRunProductMetadata const *  mergeableRunProductMetadata 
) const
finalprivatevirtual

Implements edm::ProductResolverBase.

Definition at line 1021 of file ProductResolvers.cc.

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

1021  {
1023  << "NoProcessProductResolver::putOrMergeProduct_(std::unique_ptr<WrapperBase> edp, MergeableRunProductMetadata const*) not implemented and should never be called.\n"
1024  << "Contact a Framework developer\n";
1025  }
void edm::NoProcessProductResolver::putProduct_ ( std::unique_ptr< WrapperBase edp) const
overrideprivatevirtual

Implements edm::ProductResolverBase.

Definition at line 1015 of file ProductResolvers.cc.

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

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

Implements edm::ProductResolverBase.

Definition at line 1033 of file ProductResolvers.cc.

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

1033  {
1035  << "NoProcessProductResolver::resetBranchDescription_() not implemented and should never be called.\n"
1036  << "Contact a Framework developer\n";
1037  }
void edm::NoProcessProductResolver::resetProductData_ ( bool  deleteEarly)
overrideprivatevirtual

Implements edm::ProductResolverBase.

Definition at line 971 of file ProductResolvers.cc.

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

971  {
972  const auto resetValue = unsetIndexValue();
973  lastCheckIndex_ = resetValue;
974  lastSkipCurrentCheckIndex_ = resetValue;
975  prefetchRequested_ = false;
979  }
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_
std::string const& edm::NoProcessProductResolver::resolvedModuleLabel_ ( ) const
inlineoverrideprivatevirtual
ProductResolverBase::Resolution edm::NoProcessProductResolver::resolveProduct_ ( Principal const &  principal,
bool  skipCurrentProcess,
SharedResourcesAcquirer sra,
ModuleCallingContext const *  mcc 
) const
overrideprivatevirtual

Implements edm::ProductResolverBase.

Definition at line 737 of file ProductResolvers.cc.

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

740  {
741  //See if we've already cached which Resolver we should call or if
742  // we know it is ambiguous
743  const unsigned int choiceSize = ambiguous_.size();
744 
745  //madeAtEnd_==true and not at end transition is the same as skipping the current process
746  if( (not skipCurrentProcess) and (madeAtEnd_ and mcc)) {
747  skipCurrentProcess = not mcc->parent().isAtEndTransition();
748  }
749 
750  unsigned int checkCacheIndex = skipCurrentProcess? lastSkipCurrentCheckIndex_.load() : lastCheckIndex_.load();
751  if( checkCacheIndex != choiceSize +kUnsetOffset) {
752  if (checkCacheIndex == choiceSize+kAmbiguousOffset) {
754  } else if(checkCacheIndex == choiceSize+kMissingOffset) {
755  return Resolution(nullptr);
756  }
757  return tryResolver(checkCacheIndex, principal, skipCurrentProcess,
758  sra,mcc);
759  }
760 
761  std::atomic<unsigned int>& updateCacheIndex = skipCurrentProcess? lastSkipCurrentCheckIndex_ : lastCheckIndex_;
762 
763  std::vector<unsigned int> const& lookupProcessOrder = principal.lookupProcessOrder();
764  for(unsigned int k : lookupProcessOrder) {
765  assert(k < ambiguous_.size());
766  if(k == 0) break; // Done
767  if(ambiguous_[k]) {
768  updateCacheIndex = choiceSize + kAmbiguousOffset;
770  }
772  auto resolution = tryResolver(k,principal, skipCurrentProcess, sra,mcc);
773  if(resolution.data() != nullptr) {
774  updateCacheIndex = k;
775  return resolution;
776  }
777  }
778  }
779 
780  updateCacheIndex = choiceSize + kMissingOffset;
781  return Resolution(nullptr);
782  }
Resolution tryResolver(unsigned int index, Principal const &principal, bool skipCurrentProcess, SharedResourcesAcquirer *sra, ModuleCallingContext const *mcc) const
static unsigned int kUnsetOffset
static unsigned int kMissingOffset
def principal(options)
std::atomic< unsigned int > lastSkipCurrentCheckIndex_
std::atomic< unsigned int > lastCheckIndex_
int k[5][pyjets_maxn]
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 815 of file ProductResolvers.cc.

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

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

817  {
818  if( not iSkipCurrentProcess) {
819  lastCheckIndex_ = iIndex;
820  waitingTasks_.doneWaiting(iExceptPtr);
821  } else {
824  }
825  }
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 962 of file ProductResolvers.cc.

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

Implements edm::ProductResolverBase.

Definition at line 959 of file ProductResolvers.cc.

959  {
960  }
bool edm::NoProcessProductResolver::singleProduct_ ( ) const
overrideprivatevirtual

Implements edm::ProductResolverBase.

Definition at line 981 of file ProductResolvers.cc.

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

Definition at line 904 of file ProductResolvers.cc.

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

Referenced by prefetchAsync_().

909  {
910  std::vector<unsigned int> const& lookupProcessOrder = principal.lookupProcessOrder();
911  auto index = iProcessingIndex;
912 
913  const unsigned int choiceSize = ambiguous_.size();
914  unsigned int newCacheIndex = choiceSize + kMissingOffset;
915  while(index < lookupProcessOrder.size()) {
916  auto k = lookupProcessOrder[index];
917  if(k==0) {
918  break;
919  }
920  assert(k < ambiguous_.size());
921  if(ambiguous_[k]) {
922  newCacheIndex = choiceSize + kAmbiguousOffset;
923  break;
924  }
926  //make new task
927 
928  auto task = new (tbb::task::allocate_root()) TryNextResolverWaitingTask(
929  this,
930  index,
931  &principal,
932  sra,
933  mcc,
934  skipCurrentProcess,
935  token
936  );
937  task->increment_ref_count();
938  ProductResolverBase const* productResolver = principal.getProductResolverByIndex(matchingHolders_[k]);
939 
940  //Make sure the Services are available on this thread
941  ServiceRegistry::Operate guard(token);
942 
943  productResolver->prefetchAsync(task,
944  principal,
945  skipCurrentProcess,
946  token,
947  sra, mcc);
948  if(0 == task->decrement_ref_count()) {
949  tbb::task::spawn(*task);
950  }
951  return;
952  }
953  ++index;
954  }
955  //data product unavailable
956  setCache(skipCurrentProcess, newCacheIndex, nullptr);
957  }
void setCache(bool skipCurrentProcess, ProductResolverIndex index, std::exception_ptr exceptionPtr) const
static unsigned int kMissingOffset
def principal(options)
int k[5][pyjets_maxn]
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 726 of file ProductResolvers.cc.

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

Referenced by resolveProduct_().

730  {
731  ProductResolverBase const* productResolver = principal.getProductResolverByIndex(matchingHolders_[index]);
732  return productResolver->resolveProduct(principal, skipCurrentProcess, sra, mcc);
733  }
def principal(options)
std::vector< ProductResolverIndex > matchingHolders_
bool edm::NoProcessProductResolver::unscheduledWasNotRun_ ( ) const
overrideprivatevirtual

Implements edm::ProductResolverBase.

Definition at line 985 of file ProductResolvers.cc.

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

985  {
987  << "NoProcessProductResolver::unscheduledWasNotRun_() not implemented and should never be called.\n"
988  << "Contact a Framework developer\n";
989  }
unsigned int edm::NoProcessProductResolver::unsetIndexValue ( ) const
inlineprivate

Definition at line 969 of file ProductResolvers.cc.

References ambiguous_, and kUnsetOffset.

Referenced by resetProductData_().

969 { 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 382 of file ProductResolvers.h.

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

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

Definition at line 383 of file ProductResolvers.h.

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

const bool edm::NoProcessProductResolver::madeAtEnd_
private

Definition at line 386 of file ProductResolvers.h.

Referenced by prefetchAsync_(), and resolveProduct_().

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

Definition at line 384 of file ProductResolvers.h.

Referenced by prefetchAsync_(), and resetProductData_().

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

Definition at line 385 of file ProductResolvers.h.

Referenced by prefetchAsync_(), and resetProductData_().

WaitingTaskList edm::NoProcessProductResolver::skippingWaitingTasks_
mutableprivate

Definition at line 381 of file ProductResolvers.h.

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

WaitingTaskList edm::NoProcessProductResolver::waitingTasks_
mutableprivate

Definition at line 380 of file ProductResolvers.h.

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