CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
ProductHolder.h
Go to the documentation of this file.
1 #ifndef FWCore_Framework_ProductHolder_h
2 #define FWCore_Framework_ProductHolder_h
3 
4 /*----------------------------------------------------------------------
5 
6 ProductHolder: A collection of information related to a single WrapperBase or
7 a set of related EDProducts. This is the storage unit of such information.
8 
9 ----------------------------------------------------------------------*/
10 
18 
19 #include <memory>
20 
21 #include <string>
22 
23 namespace edm {
24  class ProductProvenanceRetriever;
25  class DelayedReader;
26  class ModuleCallingContext;
27  class Principal;
28 
30  public:
31 
33 
35  virtual ~ProductHolderBase();
36 
37  ProductHolderBase(ProductHolderBase const&) = delete; // Disallow copying and moving
38  ProductHolderBase& operator=(ProductHolderBase const&) = delete; // Disallow copying and moving
39 
40  ProductData const& productData() const {
41  return getProductData();
42  }
43 
45  return getProductData();
46  }
47 
48  ProductData const* resolveProduct(ResolveStatus& resolveStatus, bool skipCurrentProcess,
49  ModuleCallingContext const* mcc) const {
50  return resolveProduct_(resolveStatus, skipCurrentProcess, mcc);
51  }
52 
53  void resetStatus () {
54  resetStatus_();
55  }
56 
59  }
60 
62 
63  void deleteProduct() {
66  }
67 
68  // product is not available (dropped or never created)
69  bool productUnavailable() const {return productUnavailable_();}
70 
71  // provenance is currently available
72  bool provenanceAvailable() const;
73 
74  // Scheduled for on demand production
75  bool onDemand() const {return onDemand_();}
76 
77  // Product was deleted early in order to save memory
78  bool productWasDeleted() const {return productWasDeleted_();}
79 
80  // Retrieves a pointer to the wrapper of the product.
81  WrapperBase* product() const { return getProductData().wrapper_.get(); }
82 
83  // Retrieves pointer to the per event(lumi)(run) provenance.
85 
86  // Sets the the per event(lumi)(run) provenance.
87  void setProductProvenance(ProductProvenance const& prov) const;
88 
89  // Retrieves a reference to the event independent provenance.
91 
92  // Retrieves a reference to the event independent provenance.
93  bool singleProduct() const {return singleProduct_();}
94 
96 
97  // Sets the pointer to the event independent provenance.
98  void resetBranchDescription(std::shared_ptr<BranchDescription const> bd) {resetBranchDescription_(bd);}
99 
100  // Retrieves a reference to the module label.
102 
103  // Same as moduleLabel except in the case of an AliasProductHolder, in which
104  // case it resolves the module which actually produces the product and returns
105  // its module label
107 
108  // Retrieves a reference to the product instance name
110 
111  // Retrieves a reference to the process name
113 
114  // Retrieves pointer to a class containing both the event independent and the per even provenance.
115  Provenance* provenance() const;
116 
117  // Initializes the event independent portion of the provenance, plus the process history ID, the product ID, and the provRetriever.
118  void setProvenance(std::shared_ptr<ProductProvenanceRetriever> provRetriever, ProcessHistory const& ph, ProductID const& pid) { setProvenance_(provRetriever, ph, pid); }
119 
120  // Initializes the process history.
122 
123  // Write the product to the stream.
124  void write(std::ostream& os) const;
125 
126  // Return the type of the product stored in this ProductHolder.
127  // We are relying on the fact that Type instances are small, and
128  // so we are free to copy them at will.
129  TypeID productType() const;
130 
131  // Retrieves the product ID of the product.
132  ProductID const& productID() const {return getProductData().prov_.productID();}
133 
134  // Puts the product and its per event(lumi)(run) provenance into the ProductHolder.
135  void putProduct(std::unique_ptr<WrapperBase> edp, ProductProvenance const& productProvenance) {
136  putProduct_(std::move(edp), productProvenance);
137  }
138 
139  // Puts the product into the ProductHolder.
140  void putProduct(std::unique_ptr<WrapperBase> edp) const {
141  putProduct_(std::move(edp));
142  }
143 
144  // This returns true if it will be put, false if it will be merged
145  bool putOrMergeProduct() const {
146  return putOrMergeProduct_();
147  }
148 
149  // merges the product with the pre-existing product
150  void mergeProduct(std::unique_ptr<WrapperBase> edp, ProductProvenance& productProvenance) {
151  mergeProduct_(std::move(edp), productProvenance);
152  }
153 
154  void mergeProduct(std::unique_ptr<WrapperBase> edp) const {
155  mergeProduct_(std::move(edp));
156  }
157 
158  // Merges two instances of the product.
159  void mergeTheProduct(std::unique_ptr<WrapperBase> edp) const;
160 
161  void reallyCheckType(WrapperBase const& prod) const;
162 
163  void checkType(WrapperBase const& prod) const {
164  checkType_(prod);
165  }
166 
167  void swap(ProductHolderBase& rhs) {swap_(rhs);}
168 
169  void throwProductDeletedException() const;
170 
171  private:
172  virtual ProductData const& getProductData() const = 0;
173  virtual ProductData& getProductData() = 0;
174  virtual ProductData const* resolveProduct_(ResolveStatus& resolveStatus, bool skipCurrentProcess,
175  ModuleCallingContext const* mcc) const = 0;
176  virtual void swap_(ProductHolderBase& rhs) = 0;
177  virtual bool onDemand_() const = 0;
178  virtual bool productUnavailable_() const = 0;
179  virtual bool productWasDeleted_() const = 0;
180  virtual void putProduct_(std::unique_ptr<WrapperBase> edp, ProductProvenance const& productProvenance) = 0;
181  virtual void putProduct_(std::unique_ptr<WrapperBase> edp) const = 0;
182  virtual void mergeProduct_(std::unique_ptr<WrapperBase> edp, ProductProvenance& productProvenance) = 0;
183  virtual void mergeProduct_(std::unique_ptr<WrapperBase> edp) const = 0;
184  virtual bool putOrMergeProduct_() const = 0;
185  virtual void checkType_(WrapperBase const& prod) const = 0;
186  virtual void resetStatus_() = 0;
187  virtual void setProductDeleted_() = 0;
188  virtual BranchDescription const& branchDescription_() const = 0;
189  virtual void resetBranchDescription_(std::shared_ptr<BranchDescription const> bd) = 0;
190  virtual std::string const& resolvedModuleLabel_() const = 0;
191  virtual void setProvenance_(std::shared_ptr<ProductProvenanceRetriever> provRetriever, ProcessHistory const& ph, ProductID const& pid) = 0;
192  virtual void setProcessHistory_(ProcessHistory const& ph) = 0;
193  virtual ProductProvenance* productProvenancePtr_() const = 0;
194  virtual void resetProductData_() = 0;
195  virtual bool singleProduct_() const = 0;
196  virtual void setPrincipal_(Principal* principal) = 0;
197  };
198 
199  inline
200  std::ostream&
201  operator<<(std::ostream& os, ProductHolderBase const& phb) {
202  phb.write(os);
203  return os;
204  }
205 
207  public:
208  explicit InputProductHolder(std::shared_ptr<BranchDescription const> bd, Principal* principal) :
210  productHasBeenDeleted_(false), principal_(principal) {}
211  virtual ~InputProductHolder();
212 
213  // The following is const because we can add an EDProduct to the
214  // cache after creation of the ProductHolder, without changing the meaning
215  // of the ProductHolder.
216  void setProduct(std::unique_ptr<WrapperBase> prod) const;
219 
220  private:
221  virtual void swap_(ProductHolderBase& rhs) override {
222  InputProductHolder& other = dynamic_cast<InputProductHolder&>(rhs);
225  }
226  virtual ProductData const* resolveProduct_(ResolveStatus& resolveStatus, bool skipCurrentProcess,
227  ModuleCallingContext const* mcc) const override;
228  virtual void putProduct_(std::unique_ptr<WrapperBase> edp, ProductProvenance const& productProvenance) override;
229  virtual void putProduct_(std::unique_ptr<WrapperBase> edp) const override;
230  virtual void mergeProduct_(std::unique_ptr<WrapperBase> edp, ProductProvenance& productProvenance) override;
231  virtual void mergeProduct_(std::unique_ptr<WrapperBase> edp) const override;
232  virtual bool putOrMergeProduct_() const override;
233  virtual void checkType_(WrapperBase const&) const override {}
234  virtual void resetStatus_() override {productIsUnavailable_ = false;
235  productHasBeenDeleted_=false;}
236  virtual bool onDemand_() const override {return false;}
237  virtual bool productUnavailable_() const override;
238  virtual bool productWasDeleted_() const override {return productHasBeenDeleted_;}
239  virtual ProductData const& getProductData() const override {return productData_;}
240  virtual ProductData& getProductData() override {return productData_;}
241  virtual void setProductDeleted_() override {productHasBeenDeleted_ = true;}
242  virtual BranchDescription const& branchDescription_() const override {return *productData().branchDescription();}
243  virtual void resetBranchDescription_(std::shared_ptr<BranchDescription const> bd) override {productData().resetBranchDescription(bd);}
244  virtual std::string const& resolvedModuleLabel_() const override {return moduleLabel();}
245  virtual void setProvenance_(std::shared_ptr<ProductProvenanceRetriever> provRetriever, ProcessHistory const& ph, ProductID const& pid) override;
246  virtual void setProcessHistory_(ProcessHistory const& ph) override;
247  virtual ProductProvenance* productProvenancePtr_() const override;
248  virtual void resetProductData_() override;
249  virtual bool singleProduct_() const override;
250  virtual void setPrincipal_(Principal* principal) override;
251 
253  mutable bool productIsUnavailable_;
256  };
257 
258  // Free swap function
260  a.swap(b);
261  }
262 
264  public:
266  Present = 0,
267  NotRun = 3,
269  NotPut = 5,
273  };
275  virtual ~ProducedProductHolder();
276  void producerStarted();
277  void producerCompleted();
278  ProductStatus& status() const {return status_();}
279  private:
280  virtual void putProduct_(std::unique_ptr<WrapperBase> edp, ProductProvenance const& productProvenance) override;
281  virtual void putProduct_(std::unique_ptr<WrapperBase> edp) const override;
282  virtual void mergeProduct_(std::unique_ptr<WrapperBase> edp, ProductProvenance& productProvenance) override;
283  virtual void mergeProduct_(std::unique_ptr<WrapperBase> edp) const override;
284  virtual bool putOrMergeProduct_() const override;
285  virtual void checkType_(WrapperBase const& prod) const override {
286  reallyCheckType(prod);
287  }
288  virtual ProductStatus& status_() const = 0;
289  virtual bool productUnavailable_() const override;
290  virtual bool productWasDeleted_() const override;
291  virtual void setProductDeleted_() override;
292  virtual BranchDescription const& branchDescription_() const override {return *productData().branchDescription();}
293  virtual void resetBranchDescription_(std::shared_ptr<BranchDescription const> bd) override {productData().resetBranchDescription(bd);}
294  virtual std::string const& resolvedModuleLabel_() const override {return moduleLabel();}
295  virtual void setProvenance_(std::shared_ptr<ProductProvenanceRetriever> provRetriever, ProcessHistory const& ph, ProductID const& pid) override;
296  virtual void setProcessHistory_(ProcessHistory const& ph) override;
297  virtual ProductProvenance* productProvenancePtr_() const override;
298  virtual void resetProductData_() override;
299  virtual bool singleProduct_() const override;
300  virtual void setPrincipal_(Principal* principal) override;
301  };
302 
304  public:
305  explicit ScheduledProductHolder(std::shared_ptr<BranchDescription const> bd) : ProducedProductHolder(), productData_(bd), theStatus_(NotRun) {}
306  virtual ~ScheduledProductHolder();
307  private:
308  virtual void swap_(ProductHolderBase& rhs) override {
309  ScheduledProductHolder& other = dynamic_cast<ScheduledProductHolder&>(rhs);
312  }
313  virtual ProductData const* resolveProduct_(ResolveStatus& resolveStatus, bool skipCurrentProcess,
314  ModuleCallingContext const* mcc) const override;
315  virtual void resetStatus_() override {theStatus_ = NotRun;}
316  virtual bool onDemand_() const override {return false;}
317  virtual ProductData const& getProductData() const override {return productData_;}
318  virtual ProductData& getProductData() override {return productData_;}
319  virtual ProductStatus& status_() const override {return theStatus_;}
320 
323  };
324 
325  // Free swap function
327  a.swap(b);
328  }
329 
331  public:
332  explicit UnscheduledProductHolder(std::shared_ptr<BranchDescription const> bd, Principal* principal) :
334  virtual ~UnscheduledProductHolder();
335  private:
336  virtual void swap_(ProductHolderBase& rhs) override {
337  UnscheduledProductHolder& other = dynamic_cast<UnscheduledProductHolder&>(rhs);
340  }
341  virtual ProductData const* resolveProduct_(ResolveStatus& resolveStatus, bool skipCurrentProcess,
342  ModuleCallingContext const* mcc) const override;
343  virtual void resetStatus_() override {theStatus_ = UnscheduledNotRun;}
344  virtual bool onDemand_() const override {return status() == UnscheduledNotRun;}
345  virtual ProductData const& getProductData() const override {return productData_;}
346  virtual ProductData& getProductData() override {return productData_;}
347  virtual ProductStatus& status_() const override {return theStatus_;}
348 
352  };
353 
354  // Free swap function
356  a.swap(b);
357  }
358 
360  public:
361  explicit SourceProductHolder(std::shared_ptr<BranchDescription const> bd) : ProducedProductHolder(), productData_(bd), theStatus_(NotPut) {}
362  virtual ~SourceProductHolder();
363  private:
364  virtual void swap_(ProductHolderBase& rhs) override {
365  SourceProductHolder& other = dynamic_cast<SourceProductHolder&>(rhs);
368  }
369  virtual ProductData const* resolveProduct_(ResolveStatus& resolveStatus, bool skipCurrentProcess,
370  ModuleCallingContext const* mcc) const override;
371  virtual void resetStatus_() override {theStatus_ = NotPut;}
372  virtual bool onDemand_() const override {return false;}
373  virtual ProductData const& getProductData() const override {return productData_;}
374  virtual ProductData& getProductData() override {return productData_;}
375  virtual ProductStatus& status_() const override {return theStatus_;}
376 
379  };
380 
382  public:
384  explicit AliasProductHolder(std::shared_ptr<BranchDescription const> bd, ProducedProductHolder& realProduct) : ProductHolderBase(), realProduct_(realProduct), bd_(bd) {}
385  virtual ~AliasProductHolder();
387  private:
388  virtual void swap_(ProductHolderBase& rhs) override {
389  AliasProductHolder& other = dynamic_cast<AliasProductHolder&>(rhs);
391  std::swap(bd_, other.bd_);
392  }
393  virtual ProductData const* resolveProduct_(ResolveStatus& resolveStatus, bool skipCurrentProcess,
394  ModuleCallingContext const* mcc) const override {return realProduct_.resolveProduct(resolveStatus, skipCurrentProcess, mcc);}
395  virtual bool onDemand_() const override {return realProduct_.onDemand();}
396  virtual void resetStatus_() override {realProduct_.resetStatus();}
397  virtual bool productUnavailable_() const override {return realProduct_.productUnavailable();}
398  virtual bool productWasDeleted_() const override {return realProduct_.productWasDeleted();}
399  virtual void checkType_(WrapperBase const& prod) const override {realProduct_.checkType(prod);}
400  virtual ProductData const& getProductData() const override {return realProduct_.productData();}
401  virtual ProductData& getProductData() override {return realProduct_.productData();}
402  virtual void setProductDeleted_() override {realProduct_.setProductDeleted();}
403  virtual void putProduct_(std::unique_ptr<WrapperBase> edp, ProductProvenance const& productProvenance) override {
404  realProduct_.putProduct(std::move(edp), productProvenance);
405  }
406  virtual void putProduct_(std::unique_ptr<WrapperBase> edp) const override {
407  realProduct_.putProduct(std::move(edp));
408  }
409  virtual void mergeProduct_(std::unique_ptr<WrapperBase> edp, ProductProvenance& productProvenance) override {
410  realProduct_.mergeProduct(std::move(edp), productProvenance);
411  }
412  virtual void mergeProduct_(std::unique_ptr<WrapperBase> edp) const override {
413  realProduct_.mergeProduct(std::move(edp));
414  }
415  virtual bool putOrMergeProduct_() const override {
417  }
418  virtual BranchDescription const& branchDescription_() const override {return *bd_;}
419  virtual void resetBranchDescription_(std::shared_ptr<BranchDescription const> bd) override {bd_ = bd;}
420  virtual std::string const& resolvedModuleLabel_() const override {return realProduct_.moduleLabel();}
421  virtual void setProvenance_(std::shared_ptr<ProductProvenanceRetriever> provRetriever, ProcessHistory const& ph, ProductID const& pid) override;
422  virtual void setProcessHistory_(ProcessHistory const& ph) override;
423  virtual ProductProvenance* productProvenancePtr_() const override;
424  virtual void resetProductData_() override;
425  virtual bool singleProduct_() const override;
426  virtual void setPrincipal_(Principal* principal) override;
427 
429  std::shared_ptr<BranchDescription const> bd_;
430  };
431 
433  public:
435  NoProcessProductHolder(std::vector<ProductHolderIndex> const& matchingHolders,
436  std::vector<bool> const& ambiguous,
438  virtual ~NoProcessProductHolder();
439  private:
440  virtual ProductData const& getProductData() const override;
441  virtual ProductData& getProductData() override;
442  virtual ProductData const* resolveProduct_(ResolveStatus& resolveStatus, bool skipCurrentProcess,
443  ModuleCallingContext const* mcc) const override;
444  virtual void swap_(ProductHolderBase& rhs) override;
445  virtual bool onDemand_() const override;
446  virtual bool productUnavailable_() const override;
447  virtual bool productWasDeleted_() const override;
448  virtual void putProduct_(std::unique_ptr<WrapperBase> edp, ProductProvenance const& productProvenance) override;
449  virtual void putProduct_(std::unique_ptr<WrapperBase> edp) const override;
450  virtual void mergeProduct_(std::unique_ptr<WrapperBase> edp, ProductProvenance& productProvenance) override;
451  virtual void mergeProduct_(std::unique_ptr<WrapperBase> edp) const override;
452  virtual bool putOrMergeProduct_() const override;
453  virtual void checkType_(WrapperBase const& prod) const override;
454  virtual void resetStatus_() override;
455  virtual void setProductDeleted_() override;
456  virtual BranchDescription const& branchDescription_() const override;
457  virtual void resetBranchDescription_(std::shared_ptr<BranchDescription const> bd) override;
458  virtual std::string const& resolvedModuleLabel_() const override {return moduleLabel();}
459  virtual void setProvenance_(std::shared_ptr<ProductProvenanceRetriever> provRetriever, ProcessHistory const& ph, ProductID const& pid) override;
460  virtual void setProcessHistory_(ProcessHistory const& ph) override;
461  virtual ProductProvenance* productProvenancePtr_() const override;
462  virtual void resetProductData_() override;
463  virtual bool singleProduct_() const override;
464  virtual void setPrincipal_(Principal* principal) override;
465 
466  std::vector<ProductHolderIndex> matchingHolders_;
467  std::vector<bool> ambiguous_;
469  };
470 
471  // Free swap function
473  a.swap(b);
474  }
475 }
476 
477 #endif
void setProduct(std::unique_ptr< WrapperBase > prod) const
virtual ProductStatus & status_() const =0
void setPrincipal(Principal *principal)
Definition: ProductHolder.h:95
virtual void resetBranchDescription_(std::shared_ptr< BranchDescription const > bd) override
WrapperBase * product() const
Definition: ProductHolder.h:81
virtual bool onDemand_() const =0
virtual void swap_(ProductHolderBase &rhs) override
virtual ProductData & getProductData() override
virtual void setPrincipal_(Principal *principal) override
bool provenanceAvailable() const
virtual ProductData & getProductData() override
virtual ProductData const * resolveProduct_(ResolveStatus &resolveStatus, bool skipCurrentProcess, ModuleCallingContext const *mcc) const override
virtual void resetBranchDescription_(std::shared_ptr< BranchDescription const > bd) override
virtual BranchDescription const & branchDescription_() const override
void putProduct(std::unique_ptr< WrapperBase > edp) const
virtual void resetProductData_() override
std::vector< ProductHolderIndex > matchingHolders_
virtual void setProductDeleted_() override
virtual void setProductDeleted_() override
virtual ProductData const & getProductData() const override
virtual bool onDemand_() const override
void resetBranchDescription(std::shared_ptr< BranchDescription const > bd)
Definition: ProductData.cc:26
virtual void resetBranchDescription_(std::shared_ptr< BranchDescription const > bd) override
virtual ProductData const * resolveProduct_(ResolveStatus &resolveStatus, bool skipCurrentProcess, ModuleCallingContext const *mcc) const override
ProducedProductHolder::ProductStatus ProductStatus
std::shared_ptr< BranchDescription const > const & branchDescription() const
Definition: ProductData.h:25
void checkType(WrapperBase const &prod) const
virtual void setProcessHistory_(ProcessHistory const &ph) override
virtual ProductStatus & status_() const override
virtual ProductData const & getProductData() const override
virtual ProductProvenance * productProvenancePtr_() const override
virtual void setPrincipal_(Principal *principal) override
virtual ProductStatus & status_() const override
virtual void resetStatus_() override
virtual BranchDescription const & branchDescription_() const override
virtual void setProvenance_(std::shared_ptr< ProductProvenanceRetriever > provRetriever, ProcessHistory const &ph, ProductID const &pid) override
virtual void resetStatus_() override
ProducedProductHolder::ProductStatus ProductStatus
void resetBranchDescription(std::shared_ptr< BranchDescription const > bd)
Definition: ProductHolder.h:98
ProductHolderBase & operator=(ProductHolderBase const &)=delete
virtual void setProcessHistory_(ProcessHistory const &ph)=0
virtual std::string const & resolvedModuleLabel_() const override
ProductData const * resolveProduct(ResolveStatus &resolveStatus, bool skipCurrentProcess, ModuleCallingContext const *mcc) const
Definition: ProductHolder.h:48
virtual bool putOrMergeProduct_() const override
virtual ProductStatus & status_() const override
NoProcessProductHolder(std::vector< ProductHolderIndex > const &matchingHolders, std::vector< bool > const &ambiguous, Principal *principal)
std::string const & processName() const
virtual bool onDemand_() const override
virtual bool singleProduct_() const override
virtual ProductData const * resolveProduct_(ResolveStatus &resolveStatus, bool skipCurrentProcess, ModuleCallingContext const *mcc) const =0
virtual void checkType_(WrapperBase const &prod) const override
virtual BranchDescription const & branchDescription_() const =0
void write(std::ostream &os) const
virtual ProductData const * resolveProduct_(ResolveStatus &resolveStatus, bool skipCurrentProcess, ModuleCallingContext const *mcc) const override
virtual void setProductDeleted_() override
void swap(Association< C > &lhs, Association< C > &rhs)
Definition: Association.h:116
virtual void mergeProduct_(std::unique_ptr< WrapperBase > edp, ProductProvenance &productProvenance)=0
virtual void checkType_(WrapperBase const &prod) const override
std::string const & moduleLabel() const
bool productIsUnavailable() const
virtual ProductData & getProductData() override
virtual void putProduct_(std::unique_ptr< WrapperBase > edp, ProductProvenance const &productProvenance)=0
virtual void resetStatus_() override
virtual void setProcessHistory_(ProcessHistory const &ph) override
virtual void resetStatus_() override
virtual bool singleProduct_() const =0
virtual void setPrincipal_(Principal *principal) override
virtual void mergeProduct_(std::unique_ptr< WrapperBase > edp, ProductProvenance &productProvenance) override
virtual bool singleProduct_() const override
virtual void putProduct_(std::unique_ptr< WrapperBase > edp) const override
Provenance * provenance() const
virtual bool putOrMergeProduct_() const override
Provenance prov_
Definition: ProductData.h:47
virtual ProductData const * resolveProduct_(ResolveStatus &resolveStatus, bool skipCurrentProcess, ModuleCallingContext const *mcc) const override
ProductProvenance * productProvenancePtr() const
Definition: ProductHolder.h:84
virtual ProductProvenance * productProvenancePtr_() const override
virtual void putProduct_(std::unique_ptr< WrapperBase > edp, ProductProvenance const &productProvenance) override
bool singleProduct() const
Definition: ProductHolder.h:93
BranchDescription const & branchDescription() const
Definition: ProductHolder.h:90
UnscheduledProductHolder(std::shared_ptr< BranchDescription const > bd, Principal *principal)
virtual void setProcessHistory_(ProcessHistory const &ph) override
InputProductHolder(std::shared_ptr< BranchDescription const > bd, Principal *principal)
std::string const & moduleLabel() const
virtual bool productUnavailable_() const =0
std::string const & productInstanceName() const
AliasProductHolder(std::shared_ptr< BranchDescription const > bd, ProducedProductHolder &realProduct)
virtual void resetProductData_() override
virtual ProductData & getProductData() override
virtual bool productUnavailable_() const override
void swap(edm::DataFrameContainer &lhs, edm::DataFrameContainer &rhs)
virtual void swap_(ProductHolderBase &rhs)=0
virtual ProductProvenance * productProvenancePtr_() const =0
virtual void checkType_(WrapperBase const &prod) const override
bool onDemand() const
Definition: ProductHolder.h:75
virtual void mergeProduct_(std::unique_ptr< WrapperBase > edp, ProductProvenance &productProvenance) override
virtual bool putOrMergeProduct_() const override
virtual void checkType_(WrapperBase const &prod) const =0
virtual void resetProductData_() override
virtual void resetStatus_() override
virtual void setProvenance_(std::shared_ptr< ProductProvenanceRetriever > provRetriever, ProcessHistory const &ph, ProductID const &pid) override
ProductID const & productID() const
virtual void resetBranchDescription_(std::shared_ptr< BranchDescription const > bd)=0
std::shared_ptr< WrapperBase > wrapper_
Definition: ProductData.h:46
virtual ProductData const & getProductData() const override
virtual bool productUnavailable_() const override
virtual void swap_(ProductHolderBase &rhs) override
void swap(ProductHolderBase &rhs)
bool productWasDeleted() const
Definition: ProductHolder.h:78
ProductData const & productData() const
Definition: ProductHolder.h:40
virtual void setProvenance_(std::shared_ptr< ProductProvenanceRetriever > provRetriever, ProcessHistory const &ph, ProductID const &pid) override
virtual bool onDemand_() const override
virtual void checkType_(WrapperBase const &) const override
virtual ProductData const & getProductData() const =0
void setProductUnavailable() const
virtual ProductData const * resolveProduct_(ResolveStatus &resolveStatus, bool skipCurrentProcess, ModuleCallingContext const *mcc) const override
virtual std::string const & resolvedModuleLabel_() const override
virtual void resetBranchDescription_(std::shared_ptr< BranchDescription const > bd) override
void setProvenance(std::shared_ptr< ProductProvenanceRetriever > provRetriever, ProcessHistory const &ph, ProductID const &pid)
virtual void mergeProduct_(std::unique_ptr< WrapperBase > edp, ProductProvenance &productProvenance) override
virtual void setProvenance_(std::shared_ptr< ProductProvenanceRetriever > provRetriever, ProcessHistory const &ph, ProductID const &pid)=0
void resetProductData()
Definition: ProductData.h:36
virtual void setProcessHistory_(ProcessHistory const &ph) override
virtual void resetStatus_()=0
virtual ProductProvenance * productProvenancePtr_() const override
virtual bool onDemand_() const override
std::string const & resolvedModuleLabel() const
virtual bool onDemand_() const override
virtual ProductData const & getProductData() const override
virtual bool putOrMergeProduct_() const =0
virtual void swap_(ProductHolderBase &rhs) override
void throwProductDeletedException() const
void setProductProvenance(ProductProvenance const &prov) const
void reallyCheckType(WrapperBase const &prod) const
virtual void resetProductData_()=0
virtual void mergeProduct_(std::unique_ptr< WrapperBase > edp) const override
SourceProductHolder(std::shared_ptr< BranchDescription const > bd)
std::string const & processName() const
virtual ProductData const * resolveProduct_(ResolveStatus &resolveStatus, bool skipCurrentProcess, ModuleCallingContext const *mcc) const override
void mergeProduct(std::unique_ptr< WrapperBase > edp) const
bool putOrMergeProduct() const
tuple pid
Definition: sysUtil.py:22
void mergeTheProduct(std::unique_ptr< WrapperBase > edp) const
double b
Definition: hdecay.h:120
std::vector< bool > ambiguous_
virtual bool singleProduct_() const override
virtual void swap_(ProductHolderBase &rhs) override
virtual bool productWasDeleted_() const override
virtual void putProduct_(std::unique_ptr< WrapperBase > edp, ProductProvenance const &productProvenance) override
virtual void putProduct_(std::unique_ptr< WrapperBase > edp, ProductProvenance const &productProvenance) override
virtual BranchDescription const & branchDescription_() const override
virtual bool putOrMergeProduct_() const override
ScheduledProductHolder(std::shared_ptr< BranchDescription const > bd)
virtual bool productUnavailable_() const override
virtual bool productUnavailable_() const override
virtual void mergeProduct_(std::unique_ptr< WrapperBase > edp, ProductProvenance &productProvenance) override
virtual std::string const & resolvedModuleLabel_() const override
double a
Definition: hdecay.h:121
virtual void swap_(ProductHolderBase &rhs) override
virtual void setPrincipal_(Principal *principal) override
virtual void setProductDeleted_() override
virtual bool onDemand_() const override
ProductData & productData()
Definition: ProductHolder.h:44
ProductStatus & status() const
std::shared_ptr< BranchDescription const > bd_
virtual std::string const & resolvedModuleLabel_() const override
void mergeProduct(std::unique_ptr< WrapperBase > edp, ProductProvenance &productProvenance)
virtual ProductData const & getProductData() const override
virtual bool singleProduct_() const override
ProductStatus & status() const
virtual void resetProductData_() override
virtual void putProduct_(std::unique_ptr< WrapperBase > edp, ProductProvenance const &productProvenance) override
virtual bool productWasDeleted_() const override
virtual bool productWasDeleted_() const =0
virtual void setProductDeleted_()=0
ProductID const & productID() const
Definition: Provenance.h:78
virtual BranchDescription const & branchDescription_() const override
virtual ProductData const & getProductData() const override
virtual void swap_(ProductHolderBase &rhs) override
volatile std::atomic< bool > shutdown_flag false
virtual bool productWasDeleted_() const override
std::ostream & operator<<(std::ostream &ost, const HLTGlobalStatus &hlt)
Formatted printout of trigger tbale.
virtual void resetStatus_() override
void setProcessHistory(ProcessHistory const &ph)
virtual ProductProvenance * productProvenancePtr_() const override
TypeID productType() const
void putProduct(std::unique_ptr< WrapperBase > edp, ProductProvenance const &productProvenance)
virtual void setProvenance_(std::shared_ptr< ProductProvenanceRetriever > provRetriever, ProcessHistory const &ph, ProductID const &pid) override
virtual bool productWasDeleted_() const override
std::string const & productInstanceName() const
virtual ProductData & getProductData() override
ProducedProductHolder & realProduct_
virtual void setPrincipal_(Principal *principal)=0
virtual std::string const & resolvedModuleLabel_() const =0
bool productUnavailable() const
Definition: ProductHolder.h:69