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

virtual void connectTo (ProductResolverBase const &iOther, Principal const *) override final
 
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 override final
 
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 override final
 
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 > recheckedAtEnd_
 
std::atomic< bool > skippingPrefetchRequested_
 
WaitingTaskList skippingWaitingTasks_
 
WaitingTaskList waitingTasks_
 

Detailed Description

Definition at line 303 of file ProductResolvers.h.

Member Typedef Documentation

Definition at line 305 of file ProductResolvers.h.

Constructor & Destructor Documentation

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

Definition at line 638 of file ProductResolvers.cc.

References ambiguous_, and matchingHolders_.

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

639  :
640  matchingHolders_(matchingHolders),
641  ambiguous_(ambiguous),
644  prefetchRequested_(false),
646  recheckedAtEnd_(false) {
647  assert(ambiguous_.size() == matchingHolders_.size());
648  }
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_
std::atomic< bool > recheckedAtEnd_

Member Function Documentation

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

Implements edm::ProductResolverBase.

Definition at line 960 of file ProductResolvers.cc.

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

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

Implements edm::ProductResolverBase.

Definition at line 978 of file ProductResolvers.cc.

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

978  {
980  << "NoProcessProductResolver::connectTo() not implemented and should never be called.\n"
981  << "Contact a Framework developer\n";
982 
983  }
bool edm::NoProcessProductResolver::dataValidFromResolver ( unsigned int  iProcessingIndex,
Principal const &  principal,
bool  iSkipCurrentProcess 
) const

Definition at line 820 of file ProductResolvers.cc.

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

822  {
823  std::vector<unsigned int> const& lookupProcessOrder = principal.lookupProcessOrder();
824  auto k = lookupProcessOrder[iProcessingIndex];
825  ProductResolverBase const* productResolver = principal.getProductResolverByIndex(matchingHolders_[k]);
826 
827  if(productResolver->productWasFetchedAndIsValid(iSkipCurrentProcess)) {
828 
829  setCache(iSkipCurrentProcess, k, nullptr);
830  return true;
831  }
832  return false;
833  }
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,
SharedResourcesAcquirer sra,
ModuleCallingContext const *  mcc 
) const
overrideprivatevirtual

Implements edm::ProductResolverBase.

Definition at line 714 of file ProductResolvers.cc.

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

718  {
719  if(not skipCurrentProcess) {
720  waitingTasks_.add(waitTask);
721 
722  //It is possible that a new product was added at then end transition
723  // so we need to recheck what to return
724  bool needToRecheckAtEnd = false;
725  if(principal.atEndTransition()) {
726  bool expected = false;
727  needToRecheckAtEnd = recheckedAtEnd_.compare_exchange_strong(expected,true);
728  if(needToRecheckAtEnd) {
729  prefetchRequested_=true;
730  }
731  }
732 
733  bool expected = false;
734  if( needToRecheckAtEnd or prefetchRequested_.compare_exchange_strong(expected,true)) {
735  //we are the first thread to request
736  tryPrefetchResolverAsync(0, principal, skipCurrentProcess, sra, mcc, ServiceRegistry::instance().presentToken());
737  }
738  } else {
739  skippingWaitingTasks_.add(waitTask);
740  bool expected = false;
741  if( skippingPrefetchRequested_.compare_exchange_strong(expected,true)) {
742  //we are the first thread to request
743  tryPrefetchResolverAsync(0, principal, skipCurrentProcess, sra, mcc, ServiceRegistry::instance().presentToken());
744  }
745  }
746  }
void add(WaitingTask *)
Adds task to the waiting list.
def principal(options)
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
Definition: Activities.doc:12
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
std::atomic< bool > recheckedAtEnd_
void edm::NoProcessProductResolver::prefetchFailed ( unsigned int  iProcessingIndex,
Principal const &  principal,
bool  iSkipCurrentProcess,
std::exception_ptr  iExceptPtr 
) const

Definition at line 808 of file ProductResolvers.cc.

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

811  {
812  std::vector<unsigned int> const& lookupProcessOrder = principal.lookupProcessOrder();
813  auto k = lookupProcessOrder[iProcessingIndex];
814 
815  setCache(iSkipCurrentProcess, k, iExceptPtr);
816  }
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 897 of file ProductResolvers.cc.

897  {
898  return nullptr;
899  }
bool edm::NoProcessProductResolver::productResolved_ ( ) const
finaloverrideprivatevirtual

Implements edm::ProductResolverBase.

Definition at line 930 of file ProductResolvers.cc.

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

930  {
932  << "NoProcessProductResolver::productResolved_() not implemented and should never be called.\n"
933  << "Contact a Framework developer\n";
934  }
bool edm::NoProcessProductResolver::productUnavailable_ ( ) const
overrideprivatevirtual

Implements edm::ProductResolverBase.

Definition at line 924 of file ProductResolvers.cc.

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

924  {
926  << "NoProcessProductResolver::productUnavailable_() not implemented and should never be called.\n"
927  << "Contact a Framework developer\n";
928  }
bool edm::NoProcessProductResolver::productWasDeleted_ ( ) const
overrideprivatevirtual

Implements edm::ProductResolverBase.

Definition at line 936 of file ProductResolvers.cc.

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

936  {
938  << "NoProcessProductResolver::productWasDeleted_() not implemented and should never be called.\n"
939  << "Contact a Framework developer\n";
940  }
bool edm::NoProcessProductResolver::productWasFetchedAndIsValid_ ( bool  iSkipCurrentProcess) const
overrideprivatevirtual

Implements edm::ProductResolverBase.

Definition at line 942 of file ProductResolvers.cc.

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

942  {
944  << "NoProcessProductResolver::productWasFetchedAndIsValid_() not implemented and should never be called.\n"
945  << "Contact a Framework developer\n";
946  }
Provenance const * edm::NoProcessProductResolver::provenance_ ( ) const
overrideprivatevirtual

Implements edm::ProductResolverBase.

Definition at line 972 of file ProductResolvers.cc.

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

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

Implements edm::ProductResolverBase.

Definition at line 954 of file ProductResolvers.cc.

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

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

Implements edm::ProductResolverBase.

Definition at line 948 of file ProductResolvers.cc.

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

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

Implements edm::ProductResolverBase.

Definition at line 966 of file ProductResolvers.cc.

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

966  {
968  << "NoProcessProductResolver::resetBranchDescription_() not implemented and should never be called.\n"
969  << "Contact a Framework developer\n";
970  }
void edm::NoProcessProductResolver::resetProductData_ ( bool  deleteEarly)
overrideprivatevirtual

Implements edm::ProductResolverBase.

Definition at line 903 of file ProductResolvers.cc.

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

903  {
904  const auto resetValue = unsetIndexValue();
905  lastCheckIndex_ = resetValue;
906  lastSkipCurrentCheckIndex_ = resetValue;
907  prefetchRequested_ = false;
909  recheckedAtEnd_ = false;
912  }
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::atomic< bool > recheckedAtEnd_
virtual 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 662 of file ProductResolvers.cc.

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

665  {
666  //See if we've already cached which Resolver we should call or if
667  // we know it is ambiguous
668  const unsigned int choiceSize = ambiguous_.size();
669  {
670  if( (not principal.atEndTransition()) or
671  recheckedAtEnd_) {
672  unsigned int checkCacheIndex = skipCurrentProcess? lastSkipCurrentCheckIndex_.load() : lastCheckIndex_.load();
673  if( checkCacheIndex != choiceSize +kUnsetOffset) {
674  if (checkCacheIndex == choiceSize+kAmbiguousOffset) {
676  } else if(checkCacheIndex == choiceSize+kMissingOffset) {
677  return Resolution(nullptr);
678  }
679  return tryResolver(checkCacheIndex, principal, skipCurrentProcess,
680  sra,mcc);
681  }
682  }
683  }
684 
685  std::atomic<unsigned int>& updateCacheIndex = skipCurrentProcess? lastSkipCurrentCheckIndex_ : lastCheckIndex_;
686 
687  //make sure recheckedAtEnd_ set to true if needed
688  auto setTrue = [](std::atomic<bool>* iBool) { *iBool = true; };
689  using TrueGuard = std::unique_ptr<std::atomic<bool>, decltype(setTrue)>;
690  TrueGuard guard( principal.atEndTransition()?&recheckedAtEnd_:nullptr,setTrue);
691 
692  std::vector<unsigned int> const& lookupProcessOrder = principal.lookupProcessOrder();
693  for(unsigned int k : lookupProcessOrder) {
694  assert(k < ambiguous_.size());
695  if(k == 0) break; // Done
696  if(ambiguous_[k]) {
697  updateCacheIndex = choiceSize + kAmbiguousOffset;
699  }
701  auto resolution = tryResolver(k,principal, skipCurrentProcess, sra,mcc);
702  if(resolution.data() != nullptr) {
703  updateCacheIndex = k;
704  return resolution;
705  }
706  }
707  }
708 
709  updateCacheIndex = choiceSize + kMissingOffset;
710  return Resolution(nullptr);
711  }
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_
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
Definition: Activities.doc:12
std::atomic< unsigned int > lastCheckIndex_
int k[5][pyjets_maxn]
std::vector< bool > ambiguous_
static unsigned int kAmbiguousOffset
std::vector< ProductResolverIndex > matchingHolders_
std::atomic< bool > recheckedAtEnd_
void edm::NoProcessProductResolver::setCache ( bool  skipCurrentProcess,
ProductResolverIndex  index,
std::exception_ptr  exceptionPtr 
) const
private

Definition at line 748 of file ProductResolvers.cc.

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

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

750  {
751  if( not iSkipCurrentProcess) {
752  lastCheckIndex_ = iIndex;
753  waitingTasks_.doneWaiting(iExceptPtr);
754  } else {
757  }
758  }
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 894 of file ProductResolvers.cc.

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

Implements edm::ProductResolverBase.

Definition at line 891 of file ProductResolvers.cc.

891  {
892  }
bool edm::NoProcessProductResolver::singleProduct_ ( ) const
overrideprivatevirtual

Implements edm::ProductResolverBase.

Definition at line 914 of file ProductResolvers.cc.

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

Definition at line 837 of file ProductResolvers.cc.

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

Referenced by prefetchAsync_().

842  {
843  std::vector<unsigned int> const& lookupProcessOrder = principal.lookupProcessOrder();
844  auto index = iProcessingIndex;
845 
846  const unsigned int choiceSize = ambiguous_.size();
847  unsigned int newCacheIndex = choiceSize + kMissingOffset;
848  while(index < lookupProcessOrder.size()) {
849  auto k = lookupProcessOrder[index];
850  if(k==0) {
851  break;
852  }
853  assert(k < ambiguous_.size());
854  if(ambiguous_[k]) {
855  newCacheIndex = choiceSize + kAmbiguousOffset;
856  break;
857  }
859  //make new task
860 
861  auto task = new (tbb::task::allocate_root()) TryNextResolverWaitingTask(
862  this,
863  index,
864  &principal,
865  sra,
866  mcc,
867  skipCurrentProcess,
868  token
869  );
870  task->increment_ref_count();
871  ProductResolverBase const* productResolver = principal.getProductResolverByIndex(matchingHolders_[k]);
872 
873  //Make sure the Services are available on this thread
874  ServiceRegistry::Operate guard(token);
875 
876  productResolver->prefetchAsync(task,
877  principal,
878  skipCurrentProcess,
879  sra, mcc);
880  if(0 == task->decrement_ref_count()) {
881  tbb::task::spawn(*task);
882  }
883  return;
884  }
885  ++index;
886  }
887  //data product unavailable
888  setCache(skipCurrentProcess, newCacheIndex, nullptr);
889  }
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 651 of file ProductResolvers.cc.

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

Referenced by resolveProduct_().

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

Implements edm::ProductResolverBase.

Definition at line 918 of file ProductResolvers.cc.

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

918  {
920  << "NoProcessProductResolver::unscheduledWasNotRun_() not implemented and should never be called.\n"
921  << "Contact a Framework developer\n";
922  }
unsigned int edm::NoProcessProductResolver::unsetIndexValue ( ) const
inlineprivate

Definition at line 901 of file ProductResolvers.cc.

References ambiguous_, and kUnsetOffset.

Referenced by resetProductData_().

901 { 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 368 of file ProductResolvers.h.

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

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

Definition at line 369 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 370 of file ProductResolvers.h.

Referenced by prefetchAsync_(), and resetProductData_().

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

Definition at line 372 of file ProductResolvers.h.

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

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

Definition at line 371 of file ProductResolvers.h.

Referenced by prefetchAsync_(), and resetProductData_().

WaitingTaskList edm::NoProcessProductResolver::skippingWaitingTasks_
mutableprivate

Definition at line 367 of file ProductResolvers.h.

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

WaitingTaskList edm::NoProcessProductResolver::waitingTasks_
mutableprivate

Definition at line 366 of file ProductResolvers.h.

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