CMS 3D CMS Logo

List of all members | Public Types | Public Member Functions | Private Member Functions | Private Attributes
edm::ParentProcessProductResolver Class Reference

#include <ProductResolvers.h>

Inheritance diagram for edm::ParentProcessProductResolver:
edm::ProductResolverBase

Public Types

typedef ProducedProductResolver::ProductStatus ProductStatus
 

Public Member Functions

virtual void connectTo (ProductResolverBase const &iOther, Principal const *iParentPrincipal) override final
 
 ParentProcessProductResolver (std::shared_ptr< BranchDescription const > bd)
 
- 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 final
 
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
 
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
 
void throwNullRealProduct () const
 
virtual bool unscheduledWasNotRun_ () const override
 

Private Attributes

std::shared_ptr< BranchDescription const > bd_
 
Principal const * parentPrincipal_
 
ProductProvenanceRetriever const * provRetriever_
 
ProductResolverBase const * realProduct_
 

Detailed Description

Definition at line 250 of file ProductResolvers.h.

Member Typedef Documentation

Definition at line 252 of file ProductResolvers.h.

Constructor & Destructor Documentation

edm::ParentProcessProductResolver::ParentProcessProductResolver ( std::shared_ptr< BranchDescription const >  bd)
inlineexplicit

Definition at line 253 of file ProductResolvers.h.

253 : ProductResolverBase(), realProduct_(nullptr), bd_(bd), provRetriever_(nullptr), parentPrincipal_(nullptr) {}
std::shared_ptr< BranchDescription const > bd_
ProductProvenanceRetriever const * provRetriever_
ProductResolverBase const * realProduct_

Member Function Documentation

virtual BranchDescription const& edm::ParentProcessProductResolver::branchDescription_ ( ) const
inlineoverrideprivatevirtual

Implements edm::ProductResolverBase.

Definition at line 285 of file ProductResolvers.h.

285 {return *bd_;}
std::shared_ptr< BranchDescription const > bd_
virtual void edm::ParentProcessProductResolver::connectTo ( ProductResolverBase const &  iOther,
Principal const *  iParentPrincipal 
)
inlinefinaloverridevirtual

Implements edm::ProductResolverBase.

Definition at line 255 of file ProductResolvers.h.

255  {
256  realProduct_ = &iOther;
257  parentPrincipal_ = iParentPrincipal;
258  };
ProductResolverBase const * realProduct_
virtual void edm::ParentProcessProductResolver::prefetchAsync_ ( WaitingTask waitTask,
Principal const &  principal,
bool  skipCurrentProcess,
SharedResourcesAcquirer sra,
ModuleCallingContext const *  mcc 
) const
inlineoverrideprivatevirtual

Implements edm::ProductResolverBase.

Definition at line 265 of file ProductResolvers.h.

269  {
270  realProduct_->prefetchAsync( waitTask, *parentPrincipal_, skipCurrentProcess, sra, mcc);
271  }
void prefetchAsync(WaitingTask *waitTask, Principal const &principal, bool skipCurrentProcess, SharedResourcesAcquirer *sra, ModuleCallingContext const *mcc) const
ProductResolverBase const * realProduct_
ProductProvenance const * edm::ParentProcessProductResolver::productProvenancePtr_ ( ) const
overrideprivatevirtual

Implements edm::ProductResolverBase.

Definition at line 589 of file ProductResolvers.cc.

589  {
590  return provRetriever_? provRetriever_->branchIDToProvenance(bd_->originalBranchID()): nullptr;
591  }
std::shared_ptr< BranchDescription const > bd_
ProductProvenanceRetriever const * provRetriever_
ProductProvenance const * branchIDToProvenance(BranchID const &bid) const
virtual bool edm::ParentProcessProductResolver::productResolved_ ( ) const
inlinefinaloverrideprivatevirtual

Implements edm::ProductResolverBase.

Definition at line 278 of file ProductResolvers.h.

278 { return realProduct_->productResolved(); }
ProductResolverBase const * realProduct_
virtual bool edm::ParentProcessProductResolver::productUnavailable_ ( ) const
inlineoverrideprivatevirtual

Implements edm::ProductResolverBase.

Definition at line 277 of file ProductResolvers.h.

277 {return realProduct_->productUnavailable();}
ProductResolverBase const * realProduct_
virtual bool edm::ParentProcessProductResolver::productWasDeleted_ ( ) const
inlineoverrideprivatevirtual

Implements edm::ProductResolverBase.

Definition at line 279 of file ProductResolvers.h.

279 {return realProduct_->productWasDeleted();}
ProductResolverBase const * realProduct_
virtual bool edm::ParentProcessProductResolver::productWasFetchedAndIsValid_ ( bool  iSkipCurrentProcess) const
inlineoverrideprivatevirtual

Implements edm::ProductResolverBase.

Definition at line 280 of file ProductResolvers.h.

References parseEventContent::prod, edm::DataManagingProductResolver::putOrMergeProduct_(), and edm::ProductResolverBase::putProduct_().

280  {
281  return realProduct_->productWasFetchedAndIsValid(iSkipCurrentProcess); }
ProductResolverBase const * realProduct_
bool productWasFetchedAndIsValid(bool iSkipCurrentProcess) const
virtual Provenance const* edm::ParentProcessProductResolver::provenance_ ( ) const
inlinefinaloverrideprivatevirtual

Implements edm::ProductResolverBase.

Definition at line 287 of file ProductResolvers.h.

287  {return realProduct_->provenance();
288  }
Provenance const * provenance() const
ProductResolverBase const * realProduct_
void edm::ParentProcessProductResolver::putOrMergeProduct_ ( std::unique_ptr< WrapperBase prod) const
finaloverrideprivatevirtual

Implements edm::ProductResolverBase.

Definition at line 606 of file ProductResolvers.cc.

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

606  {
608  << "ParentProcessProductResolver::putOrMergeProduct_(std::unique_ptr<WrapperBase> edp) not implemented and should never be called.\n"
609  << "Contact a Framework developer\n";
610  }
void edm::ParentProcessProductResolver::putProduct_ ( std::unique_ptr< WrapperBase edp) const
overrideprivatevirtual

Implements edm::ProductResolverBase.

Definition at line 600 of file ProductResolvers.cc.

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

600  {
602  << "ParentProcessProductResolver::putProduct_() not implemented and should never be called.\n"
603  << "Contact a Framework developer\n";
604  }
virtual void edm::ParentProcessProductResolver::resetBranchDescription_ ( std::shared_ptr< BranchDescription const >  bd)
inlineoverrideprivatevirtual

Implements edm::ProductResolverBase.

Definition at line 286 of file ProductResolvers.h.

286 {bd_ = bd;}
std::shared_ptr< BranchDescription const > bd_
void edm::ParentProcessProductResolver::resetProductData_ ( bool  deleteEarly)
overrideprivatevirtual

Implements edm::ProductResolverBase.

Definition at line 593 of file ProductResolvers.cc.

593  {
594  }
virtual std::string const& edm::ParentProcessProductResolver::resolvedModuleLabel_ ( ) const
inlineoverrideprivatevirtual
virtual Resolution edm::ParentProcessProductResolver::resolveProduct_ ( Principal const &  principal,
bool  skipCurrentProcess,
SharedResourcesAcquirer sra,
ModuleCallingContext const *  mcc 
) const
inlineoverrideprivatevirtual

Implements edm::ProductResolverBase.

Definition at line 261 of file ProductResolvers.h.

264  {return realProduct_->resolveProduct(*parentPrincipal_, skipCurrentProcess, sra, mcc);}
Resolution resolveProduct(Principal const &principal, bool skipCurrentProcess, SharedResourcesAcquirer *sra, ModuleCallingContext const *mcc) const
ProductResolverBase const * realProduct_
void edm::ParentProcessProductResolver::setProcessHistory_ ( ProcessHistory const &  ph)
overrideprivatevirtual

Implements edm::ProductResolverBase.

Definition at line 586 of file ProductResolvers.cc.

586  {
587  }
void edm::ParentProcessProductResolver::setProvenance_ ( ProductProvenanceRetriever const *  provRetriever,
ProcessHistory const &  ph,
ProductID const &  pid 
)
overrideprivatevirtual

Implements edm::ProductResolverBase.

Definition at line 582 of file ProductResolvers.cc.

582  {
583  provRetriever_ = provRetriever;
584  }
ProductProvenanceRetriever const * provRetriever_
bool edm::ParentProcessProductResolver::singleProduct_ ( ) const
overrideprivatevirtual

Implements edm::ProductResolverBase.

Definition at line 596 of file ProductResolvers.cc.

596  {
597  return true;
598  }
void edm::ParentProcessProductResolver::throwNullRealProduct ( ) const
private

Definition at line 612 of file ProductResolvers.cc.

References Exception, edm::errors::LogicError, and edm::NoProcessProductResolver::NoProcessProductResolver().

612  {
613  // In principle, this ought to be fixed. I noticed one hits this error
614  // when in a SubProcess and calling the Event::getProvenance function
615  // with a BranchID to a branch from an earlier SubProcess or the top
616  // level process and this branch is not kept in this SubProcess. It might
617  // be possible to hit this in other contexts. I say it ought to be
618  // fixed because one does not encounter this issue if the SubProcesses
619  // are split into genuinely different processes (in principle that
620  // ought to give identical behavior and results). No user has ever
621  // reported this issue which has been around for some time and it was only
622  // noticed when testing some rare corner cases after modifying Core code.
623  // After discussing this with Chris we decided that at least for the moment
624  // there are higher priorities than fixing this ... I converted it so it
625  // causes an exception instead of a seg fault. The issue that may need to
626  // be addressed someday is how ProductResolvers for non-kept branches are
627  // connected to earlier SubProcesses.
629  << "ParentProcessProductResolver::throwNullRealProduct RealProduct pointer not set in this context.\n"
630  << "Contact a Framework developer\n";
631  }
virtual bool edm::ParentProcessProductResolver::unscheduledWasNotRun_ ( ) const
inlineoverrideprivatevirtual

Implements edm::ProductResolverBase.

Definition at line 272 of file ProductResolvers.h.

272  {
275  return false;
276  }
ProductResolverBase const * realProduct_

Member Data Documentation

std::shared_ptr<BranchDescription const> edm::ParentProcessProductResolver::bd_
private

Definition at line 298 of file ProductResolvers.h.

Principal const* edm::ParentProcessProductResolver::parentPrincipal_
private

Definition at line 300 of file ProductResolvers.h.

ProductProvenanceRetriever const* edm::ParentProcessProductResolver::provRetriever_
private

Definition at line 299 of file ProductResolvers.h.

ProductResolverBase const* edm::ParentProcessProductResolver::realProduct_
private

Definition at line 297 of file ProductResolvers.h.