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
edm::ProducedProductHolder Class Referenceabstract

#include <ProductHolder.h>

Inheritance diagram for edm::ProducedProductHolder:
edm::ProductHolderBase edm::ScheduledProductHolder edm::SourceProductHolder edm::UnscheduledProductHolder

Public Types

enum  ProductStatus {
  Present = 0, NotRun = 3, NotCompleted = 4, NotPut = 5,
  UnscheduledNotRun = 6, ProductDeleted =7, Uninitialized = 0xff
}
 
- Public Types inherited from edm::ProductHolderBase
enum  ResolveStatus { ProductFound, ProductNotFound, Ambiguous }
 

Public Member Functions

 ProducedProductHolder ()
 
void producerCompleted ()
 
void producerStarted ()
 
ProductStatusstatus () const
 
virtual ~ProducedProductHolder ()
 
- Public Member Functions inherited from edm::ProductHolderBase
BranchDescription const & branchDescription () const
 
void checkType (WrapperBase const &prod) const
 
void deleteProduct ()
 
void mergeProduct (std::unique_ptr< WrapperBase > edp, ProductProvenance &productProvenance)
 
void mergeProduct (std::unique_ptr< WrapperBase > edp) const
 
void mergeTheProduct (std::unique_ptr< WrapperBase > edp) const
 
std::string const & moduleLabel () const
 
bool onDemand () const
 
ProductHolderBaseoperator= (ProductHolderBase const &)=delete
 
std::string const & processName () const
 
WrapperBaseproduct () const
 
ProductData const & productData () const
 
ProductDataproductData ()
 
 ProductHolderBase ()
 
 ProductHolderBase (ProductHolderBase const &)=delete
 
ProductID const & productID () const
 
std::string const & productInstanceName () const
 
ProductProvenanceproductProvenancePtr () const
 
TypeID productType () const
 
bool productUnavailable () const
 
bool productWasDeleted () const
 
Provenanceprovenance () const
 
bool provenanceAvailable () const
 
bool putOrMergeProduct () const
 
void putProduct (std::unique_ptr< WrapperBase > edp, ProductProvenance const &productProvenance)
 
void putProduct (std::unique_ptr< WrapperBase > edp) const
 
void reallyCheckType (WrapperBase const &prod) const
 
void resetBranchDescription (std::shared_ptr< BranchDescription const > bd)
 
void resetProductData ()
 
void resetStatus ()
 
std::string const & resolvedModuleLabel () const
 
ProductData const * resolveProduct (ResolveStatus &resolveStatus, bool skipCurrentProcess, SharedResourcesAcquirer *sra, ModuleCallingContext const *mcc) const
 
void setPrincipal (Principal *principal)
 
void setProcessHistory (ProcessHistory const &ph)
 
void setProductDeleted ()
 
void setProductProvenance (ProductProvenance const &prov) const
 
void setProvenance (std::shared_ptr< ProductProvenanceRetriever > provRetriever, ProcessHistory const &ph, ProductID const &pid)
 
bool singleProduct () const
 
void swap (ProductHolderBase &rhs)
 
void throwProductDeletedException () const
 
void write (std::ostream &os) const
 
virtual ~ProductHolderBase ()
 

Private Member Functions

virtual BranchDescription const & branchDescription_ () const override
 
virtual void checkType_ (WrapperBase const &prod) const override
 
virtual void mergeProduct_ (std::unique_ptr< WrapperBase > edp, ProductProvenance &productProvenance) override
 
virtual void mergeProduct_ (std::unique_ptr< WrapperBase > edp) const override
 
virtual ProductProvenanceproductProvenancePtr_ () const override
 
virtual bool productUnavailable_ () const override
 
virtual bool productWasDeleted_ () const override
 
virtual bool putOrMergeProduct_ () const override
 
virtual void putProduct_ (std::unique_ptr< WrapperBase > edp, ProductProvenance const &productProvenance) override
 
virtual void putProduct_ (std::unique_ptr< WrapperBase > edp) const override
 
virtual void resetBranchDescription_ (std::shared_ptr< BranchDescription const > bd) override
 
virtual void resetProductData_ () override
 
virtual std::string const & resolvedModuleLabel_ () const override
 
virtual void setPrincipal_ (Principal *principal) override
 
virtual void setProcessHistory_ (ProcessHistory const &ph) override
 
virtual void setProductDeleted_ () override
 
virtual void setProvenance_ (std::shared_ptr< ProductProvenanceRetriever > provRetriever, ProcessHistory const &ph, ProductID const &pid) override
 
virtual bool singleProduct_ () const override
 
virtual ProductStatusstatus_ () const =0
 

Detailed Description

Definition at line 270 of file ProductHolder.h.

Member Enumeration Documentation

Constructor & Destructor Documentation

edm::ProducedProductHolder::ProducedProductHolder ( )
inline

Definition at line 281 of file ProductHolder.h.

edm::ProducedProductHolder::~ProducedProductHolder ( )
virtual

Definition at line 31 of file ProductHolder.cc.

31 {}

Member Function Documentation

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

Implements edm::ProductHolderBase.

Definition at line 299 of file ProductHolder.h.

References edm::ProductData::branchDescription(), and edm::ProductHolderBase::productData().

299 {return *productData().branchDescription();}
std::shared_ptr< BranchDescription const > const & branchDescription() const
Definition: ProductData.h:25
ProductData const & productData() const
Definition: ProductHolder.h:41
virtual void edm::ProducedProductHolder::checkType_ ( WrapperBase const &  prod) const
inlineoverrideprivatevirtual

Implements edm::ProductHolderBase.

Definition at line 292 of file ProductHolder.h.

References edm::ProductHolderBase::reallyCheckType().

292  {
294  }
void reallyCheckType(WrapperBase const &prod) const
void edm::ProducedProductHolder::mergeProduct_ ( std::unique_ptr< WrapperBase edp,
ProductProvenance productProvenance 
)
overrideprivatevirtual

Implements edm::ProductHolderBase.

Definition at line 137 of file ProductHolder.cc.

References assert(), edm::ProductHolderBase::mergeTheProduct(), Present, edm::ProductHolderBase::provenance(), edm::ProductHolderBase::setProductProvenance(), and status().

139  {
140  assert(provenance()->productProvenanceValid());
141  assert(status() == Present);
142  setProductProvenance(productProvenance);
143  mergeTheProduct(std::move(edp));
144  }
assert(m_qm.get())
Provenance * provenance() const
void setProductProvenance(ProductProvenance const &prov) const
void mergeTheProduct(std::unique_ptr< WrapperBase > edp) const
ProductStatus & status() const
void edm::ProducedProductHolder::mergeProduct_ ( std::unique_ptr< WrapperBase edp) const
overrideprivatevirtual

Implements edm::ProductHolderBase.

Definition at line 152 of file ProductHolder.cc.

References assert(), edm::ProductHolderBase::mergeTheProduct(), Present, and status().

152  {
153  assert(status() == Present);
154  mergeTheProduct(std::move(edp));
155  }
assert(m_qm.get())
void mergeTheProduct(std::unique_ptr< WrapperBase > edp) const
ProductStatus & status() const
void edm::ProducedProductHolder::producerCompleted ( )
void edm::ProducedProductHolder::producerStarted ( )
ProductProvenance * edm::ProducedProductHolder::productProvenancePtr_ ( ) const
overrideprivatevirtual

Implements edm::ProductHolderBase.

Definition at line 325 of file ProductHolder.cc.

References edm::Provenance::productProvenance(), and edm::ProductHolderBase::provenance().

325  {
326  return provenance()->productProvenance();
327  }
ProductProvenance * productProvenance() const
Definition: Provenance.h:49
Provenance * provenance() const
bool edm::ProducedProductHolder::productUnavailable_ ( ) const
overrideprivatevirtual

Implements edm::ProductHolderBase.

Definition at line 296 of file ProductHolder.cc.

References edm::WrapperBase::isPresent(), edm::ProductHolderBase::onDemand(), and edm::ProductHolderBase::product().

296  {
297  // If unscheduled production, the product is potentially available.
298  if(onDemand()) return false;
299  // The product is available if and only if a product has been put.
300  bool unavailable = !(product() && product()->isPresent());
301  return unavailable;
302  }
WrapperBase * product() const
Definition: ProductHolder.h:84
bool isPresent() const
Definition: WrapperBase.h:22
bool onDemand() const
Definition: ProductHolder.h:78
bool edm::ProducedProductHolder::productWasDeleted_ ( ) const
overrideprivatevirtual

Implements edm::ProductHolderBase.

Definition at line 306 of file ProductHolder.cc.

References ProductDeleted, and status().

306  {
307  return status() == ProductDeleted;
308  }
ProductStatus & status() const
bool edm::ProducedProductHolder::putOrMergeProduct_ ( ) const
overrideprivatevirtual

Implements edm::ProductHolderBase.

Definition at line 147 of file ProductHolder.cc.

References edm::ProductHolderBase::productUnavailable().

147  {
148  return productUnavailable();
149  }
bool productUnavailable() const
Definition: ProductHolder.h:72
void edm::ProducedProductHolder::putProduct_ ( std::unique_ptr< WrapperBase edp,
ProductProvenance const &  productProvenance 
)
overrideprivatevirtual

Implements edm::ProductHolderBase.

Definition at line 118 of file ProductHolder.cc.

References assert(), edm::ProductHolderBase::branchDescription(), edm::BranchDescription::branchName(), Exception, edm::errors::InsertFailure, Present, edm::es::produced, edm::ProductHolderBase::product(), edm::ProductHolderBase::productData(), edm::ProductHolderBase::provenance(), edm::ProductHolderBase::setProductProvenance(), status(), status_(), Uninitialized, and edm::ProductData::wrapper_.

120  {
121  if(product()) {
123  << "Attempt to insert more than one product on branch " << branchDescription().branchName() << "\n";
124  }
126  assert(edp.get() != nullptr);
127  assert(!provenance()->productProvenanceValid());
128  assert(status() != Present);
130  setProductProvenance(productProvenance);
131  assert(provenance()->productProvenanceValid());
132  productData().wrapper_ = std::move(edp); // ProductHolder takes ownership
133  status_() = Present;
134  }
virtual ProductStatus & status_() const =0
std::string const & branchName() const
WrapperBase * product() const
Definition: ProductHolder.h:84
assert(m_qm.get())
Provenance * provenance() const
BranchDescription const & branchDescription() const
Definition: ProductHolder.h:93
std::shared_ptr< WrapperBase > wrapper_
Definition: ProductData.h:46
ProductData const & productData() const
Definition: ProductHolder.h:41
void setProductProvenance(ProductProvenance const &prov) const
eventsetup::produce::Produce produced
Definition: ESProducts.cc:20
ProductStatus & status() const
void edm::ProducedProductHolder::putProduct_ ( std::unique_ptr< WrapperBase edp) const
overrideprivatevirtual

Implements edm::ProductHolderBase.

Definition at line 158 of file ProductHolder.cc.

References assert(), edm::ProductHolderBase::branchDescription(), edm::BranchDescription::branchName(), Exception, edm::errors::InsertFailure, Present, edm::es::produced, edm::ProductHolderBase::product(), edm::ProductHolderBase::productData(), status(), status_(), Uninitialized, and edm::ProductData::wrapper_.

158  {
159  if(product()) {
161  << "Attempt to insert more than one product on branch " << branchDescription().branchName() << "\n";
162  }
164  assert(edp.get() != nullptr);
165  assert(status() != Present);
167  productData().wrapper_ = std::move(edp); // ProductHolder takes ownership
168  status_() = Present;
169  }
virtual ProductStatus & status_() const =0
std::string const & branchName() const
WrapperBase * product() const
Definition: ProductHolder.h:84
assert(m_qm.get())
BranchDescription const & branchDescription() const
Definition: ProductHolder.h:93
std::shared_ptr< WrapperBase > wrapper_
Definition: ProductData.h:46
ProductData const & productData() const
Definition: ProductHolder.h:41
eventsetup::produce::Produce produced
Definition: ESProducts.cc:20
ProductStatus & status() const
virtual void edm::ProducedProductHolder::resetBranchDescription_ ( std::shared_ptr< BranchDescription const >  bd)
inlineoverrideprivatevirtual

Implements edm::ProductHolderBase.

Definition at line 300 of file ProductHolder.h.

References edm::ProductHolderBase::productData(), and edm::ProductData::resetBranchDescription().

void resetBranchDescription(std::shared_ptr< BranchDescription const > bd)
Definition: ProductData.cc:26
ProductData const & productData() const
Definition: ProductHolder.h:41
void edm::ProducedProductHolder::resetProductData_ ( )
overrideprivatevirtual
virtual std::string const& edm::ProducedProductHolder::resolvedModuleLabel_ ( ) const
inlineoverrideprivatevirtual

Implements edm::ProductHolderBase.

Definition at line 301 of file ProductHolder.h.

References edm::ProductHolderBase::moduleLabel().

301 {return moduleLabel();}
std::string const & moduleLabel() const
void edm::ProducedProductHolder::setPrincipal_ ( Principal principal)
overrideprivatevirtual

Implements edm::ProductHolderBase.

Definition at line 338 of file ProductHolder.cc.

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

338  {
340  << "ProducedProductHolder::setPrincipal__() not implemented and should never be called.\n"
341  << "Contact a Framework developer\n";
342  }
void edm::ProducedProductHolder::setProcessHistory_ ( ProcessHistory const &  ph)
overrideprivatevirtual

Implements edm::ProductHolderBase.

Definition at line 321 of file ProductHolder.cc.

References edm::ProductHolderBase::productData(), edm::ProductData::prov_, and edm::Provenance::setProcessHistory().

321  {
323  }
Provenance prov_
Definition: ProductData.h:47
ProductData const & productData() const
Definition: ProductHolder.h:41
void setProcessHistory(ProcessHistory const &ph)
Definition: Provenance.h:76
void edm::ProducedProductHolder::setProductDeleted_ ( )
overrideprivatevirtual

Implements edm::ProductHolderBase.

Definition at line 311 of file ProductHolder.cc.

References ProductDeleted, and status().

void edm::ProducedProductHolder::setProvenance_ ( std::shared_ptr< ProductProvenanceRetriever provRetriever,
ProcessHistory const &  ph,
ProductID const &  pid 
)
overrideprivatevirtual

Implements edm::ProductHolderBase.

Definition at line 315 of file ProductHolder.cc.

References edm::ProductHolderBase::productData(), edm::ProductData::prov_, edm::Provenance::setProcessHistory(), edm::Provenance::setProductID(), and edm::Provenance::setStore().

315  {
317  productData().prov_.setStore(provRetriever);
319  }
Provenance prov_
Definition: ProductData.h:47
ProductData const & productData() const
Definition: ProductHolder.h:41
tuple pid
Definition: sysUtil.py:22
void setProductID(ProductID const &pid)
Definition: Provenance.h:82
void setStore(std::shared_ptr< ProductProvenanceRetriever > store) const
Definition: Provenance.h:74
void setProcessHistory(ProcessHistory const &ph)
Definition: Provenance.h:76
bool edm::ProducedProductHolder::singleProduct_ ( ) const
overrideprivatevirtual

Implements edm::ProductHolderBase.

Definition at line 334 of file ProductHolder.cc.

334  {
335  return true;
336  }
ProductStatus& edm::ProducedProductHolder::status ( void  ) const
inline
virtual ProductStatus& edm::ProducedProductHolder::status_ ( ) const
privatepure virtual