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;
28  class Principal;
29 
31  public:
32 
34 
36  virtual ~ProductHolderBase();
37 
38  ProductHolderBase(ProductHolderBase const&) = delete; // Disallow copying and moving
39  ProductHolderBase& operator=(ProductHolderBase const&) = delete; // Disallow copying and moving
40 
41  ProductData const& productData() const {
42  return getProductData();
43  }
44 
46  return getProductData();
47  }
48 
49  ProductData const* resolveProduct(ResolveStatus& resolveStatus,
50  bool skipCurrentProcess,
52  ModuleCallingContext const* mcc) const {
53  return resolveProduct_(resolveStatus, skipCurrentProcess, sra, mcc);
54  }
55 
56  void resetStatus () {
57  resetStatus_();
58  }
59 
62  }
63 
65 
66  void deleteProduct() {
69  }
70 
71  // product is not available (dropped or never created)
72  bool productUnavailable() const {return productUnavailable_();}
73 
74  // provenance is currently available
75  bool provenanceAvailable() const;
76 
77  // Scheduled for on demand production
78  bool onDemand() const {return onDemand_();}
79 
80  // Product was deleted early in order to save memory
81  bool productWasDeleted() const {return productWasDeleted_();}
82 
83  // Retrieves a pointer to the wrapper of the product.
84  WrapperBase* product() const { return getProductData().wrapper_.get(); }
85 
86  // Retrieves pointer to the per event(lumi)(run) provenance.
88 
89  // Sets the the per event(lumi)(run) provenance.
90  void setProductProvenance(ProductProvenance const& prov) const;
91 
92  // Retrieves a reference to the event independent provenance.
94 
95  // Retrieves a reference to the event independent provenance.
96  bool singleProduct() const {return singleProduct_();}
97 
99 
100  // Sets the pointer to the event independent provenance.
101  void resetBranchDescription(std::shared_ptr<BranchDescription const> bd) {resetBranchDescription_(bd);}
102 
103  // Retrieves a reference to the module label.
105 
106  // Same as moduleLabel except in the case of an AliasProductHolder, in which
107  // case it resolves the module which actually produces the product and returns
108  // its module label
110 
111  // Retrieves a reference to the product instance name
113 
114  // Retrieves a reference to the process name
116 
117  // Retrieves pointer to a class containing both the event independent and the per even provenance.
118  Provenance* provenance() const;
119 
120  // Initializes the event independent portion of the provenance, plus the process history ID, the product ID, and the provRetriever.
121  void setProvenance(std::shared_ptr<ProductProvenanceRetriever> provRetriever, ProcessHistory const& ph, ProductID const& pid) { setProvenance_(provRetriever, ph, pid); }
122 
123  // Initializes the process history.
125 
126  // Write the product to the stream.
127  void write(std::ostream& os) const;
128 
129  // Return the type of the product stored in this ProductHolder.
130  // We are relying on the fact that Type instances are small, and
131  // so we are free to copy them at will.
132  TypeID productType() const;
133 
134  // Retrieves the product ID of the product.
135  ProductID const& productID() const {return getProductData().prov_.productID();}
136 
137  // Puts the product and its per event(lumi)(run) provenance into the ProductHolder.
138  void putProduct(std::unique_ptr<WrapperBase> edp, ProductProvenance const& productProvenance) {
139  putProduct_(std::move(edp), productProvenance);
140  }
141 
142  // Puts the product into the ProductHolder.
143  void putProduct(std::unique_ptr<WrapperBase> edp) const {
144  putProduct_(std::move(edp));
145  }
146 
147  // This returns true if it will be put, false if it will be merged
148  bool putOrMergeProduct() const {
149  return putOrMergeProduct_();
150  }
151 
152  // merges the product with the pre-existing product
153  void mergeProduct(std::unique_ptr<WrapperBase> edp, ProductProvenance& productProvenance) {
154  mergeProduct_(std::move(edp), productProvenance);
155  }
156 
157  void mergeProduct(std::unique_ptr<WrapperBase> edp) const {
158  mergeProduct_(std::move(edp));
159  }
160 
161  // Merges two instances of the product.
162  void mergeTheProduct(std::unique_ptr<WrapperBase> edp) const;
163 
164  void reallyCheckType(WrapperBase const& prod) const;
165 
166  void checkType(WrapperBase const& prod) const {
167  checkType_(prod);
168  }
169 
170  void swap(ProductHolderBase& rhs) {swap_(rhs);}
171 
172  void throwProductDeletedException() const;
173 
174  private:
175  virtual ProductData const& getProductData() const = 0;
176  virtual ProductData& getProductData() = 0;
177  virtual ProductData const* resolveProduct_(ResolveStatus& resolveStatus,
178  bool skipCurrentProcess,
180  ModuleCallingContext const* mcc) const = 0;
181  virtual void swap_(ProductHolderBase& rhs) = 0;
182  virtual bool onDemand_() const = 0;
183  virtual bool productUnavailable_() const = 0;
184  virtual bool productWasDeleted_() const = 0;
185  virtual void putProduct_(std::unique_ptr<WrapperBase> edp, ProductProvenance const& productProvenance) = 0;
186  virtual void putProduct_(std::unique_ptr<WrapperBase> edp) const = 0;
187  virtual void mergeProduct_(std::unique_ptr<WrapperBase> edp, ProductProvenance& productProvenance) = 0;
188  virtual void mergeProduct_(std::unique_ptr<WrapperBase> edp) const = 0;
189  virtual bool putOrMergeProduct_() const = 0;
190  virtual void checkType_(WrapperBase const& prod) const = 0;
191  virtual void resetStatus_() = 0;
192  virtual void setProductDeleted_() = 0;
193  virtual BranchDescription const& branchDescription_() const = 0;
194  virtual void resetBranchDescription_(std::shared_ptr<BranchDescription const> bd) = 0;
195  virtual std::string const& resolvedModuleLabel_() const = 0;
196  virtual void setProvenance_(std::shared_ptr<ProductProvenanceRetriever> provRetriever, ProcessHistory const& ph, ProductID const& pid) = 0;
197  virtual void setProcessHistory_(ProcessHistory const& ph) = 0;
198  virtual ProductProvenance* productProvenancePtr_() const = 0;
199  virtual void resetProductData_() = 0;
200  virtual bool singleProduct_() const = 0;
201  virtual void setPrincipal_(Principal* principal) = 0;
202  };
203 
204  inline
205  std::ostream&
206  operator<<(std::ostream& os, ProductHolderBase const& phb) {
207  phb.write(os);
208  return os;
209  }
210 
212  public:
213  explicit InputProductHolder(std::shared_ptr<BranchDescription const> bd, Principal* principal) :
215  productHasBeenDeleted_(false), principal_(principal) {}
216  virtual ~InputProductHolder();
217 
218  // The following is const because we can add an EDProduct to the
219  // cache after creation of the ProductHolder, without changing the meaning
220  // of the ProductHolder.
221  void setProduct(std::unique_ptr<WrapperBase> prod) const;
224 
225  private:
226  virtual void swap_(ProductHolderBase& rhs) override {
227  InputProductHolder& other = dynamic_cast<InputProductHolder&>(rhs);
230  }
231  virtual ProductData const* resolveProduct_(ResolveStatus& resolveStatus,
232  bool skipCurrentProcess,
234  ModuleCallingContext const* mcc) const override;
235  virtual void putProduct_(std::unique_ptr<WrapperBase> edp, ProductProvenance const& productProvenance) override;
236  virtual void putProduct_(std::unique_ptr<WrapperBase> edp) const override;
237  virtual void mergeProduct_(std::unique_ptr<WrapperBase> edp, ProductProvenance& productProvenance) override;
238  virtual void mergeProduct_(std::unique_ptr<WrapperBase> edp) const override;
239  virtual bool putOrMergeProduct_() const override;
240  virtual void checkType_(WrapperBase const&) const override {}
241  virtual void resetStatus_() override {productIsUnavailable_ = false;
242  productHasBeenDeleted_=false;}
243  virtual bool onDemand_() const override {return false;}
244  virtual bool productUnavailable_() const override;
245  virtual bool productWasDeleted_() const override {return productHasBeenDeleted_;}
246  virtual ProductData const& getProductData() const override {return productData_;}
247  virtual ProductData& getProductData() override {return productData_;}
248  virtual void setProductDeleted_() override {productHasBeenDeleted_ = true;}
249  virtual BranchDescription const& branchDescription_() const override {return *productData().branchDescription();}
250  virtual void resetBranchDescription_(std::shared_ptr<BranchDescription const> bd) override {productData().resetBranchDescription(bd);}
251  virtual std::string const& resolvedModuleLabel_() const override {return moduleLabel();}
252  virtual void setProvenance_(std::shared_ptr<ProductProvenanceRetriever> provRetriever, ProcessHistory const& ph, ProductID const& pid) override;
253  virtual void setProcessHistory_(ProcessHistory const& ph) override;
254  virtual ProductProvenance* productProvenancePtr_() const override;
255  virtual void resetProductData_() override;
256  virtual bool singleProduct_() const override;
257  virtual void setPrincipal_(Principal* principal) override;
258 
260  mutable bool productIsUnavailable_;
263  };
264 
265  // Free swap function
267  a.swap(b);
268  }
269 
271  public:
273  Present = 0,
274  NotRun = 3,
276  NotPut = 5,
280  };
282  virtual ~ProducedProductHolder();
283  void producerStarted();
284  void producerCompleted();
285  ProductStatus& status() const {return status_();}
286  private:
287  virtual void putProduct_(std::unique_ptr<WrapperBase> edp, ProductProvenance const& productProvenance) override;
288  virtual void putProduct_(std::unique_ptr<WrapperBase> edp) const override;
289  virtual void mergeProduct_(std::unique_ptr<WrapperBase> edp, ProductProvenance& productProvenance) override;
290  virtual void mergeProduct_(std::unique_ptr<WrapperBase> edp) const override;
291  virtual bool putOrMergeProduct_() const override;
292  virtual void checkType_(WrapperBase const& prod) const override {
293  reallyCheckType(prod);
294  }
295  virtual ProductStatus& status_() const = 0;
296  virtual bool productUnavailable_() const override;
297  virtual bool productWasDeleted_() const override;
298  virtual void setProductDeleted_() override;
299  virtual BranchDescription const& branchDescription_() const override {return *productData().branchDescription();}
300  virtual void resetBranchDescription_(std::shared_ptr<BranchDescription const> bd) override {productData().resetBranchDescription(bd);}
301  virtual std::string const& resolvedModuleLabel_() const override {return moduleLabel();}
302  virtual void setProvenance_(std::shared_ptr<ProductProvenanceRetriever> provRetriever, ProcessHistory const& ph, ProductID const& pid) override;
303  virtual void setProcessHistory_(ProcessHistory const& ph) override;
304  virtual ProductProvenance* productProvenancePtr_() const override;
305  virtual void resetProductData_() override;
306  virtual bool singleProduct_() const override;
307  virtual void setPrincipal_(Principal* principal) override;
308  };
309 
311  public:
312  explicit ScheduledProductHolder(std::shared_ptr<BranchDescription const> bd) : ProducedProductHolder(), productData_(bd), theStatus_(NotRun) {}
313  virtual ~ScheduledProductHolder();
314  private:
315  virtual void swap_(ProductHolderBase& rhs) override {
316  ScheduledProductHolder& other = dynamic_cast<ScheduledProductHolder&>(rhs);
319  }
320  virtual ProductData const* resolveProduct_(ResolveStatus& resolveStatus,
321  bool skipCurrentProcess,
323  ModuleCallingContext const* mcc) const override;
324  virtual void resetStatus_() override {theStatus_ = NotRun;}
325  virtual bool onDemand_() const override {return false;}
326  virtual ProductData const& getProductData() const override {return productData_;}
327  virtual ProductData& getProductData() override {return productData_;}
328  virtual ProductStatus& status_() const override {return theStatus_;}
329 
332  };
333 
334  // Free swap function
336  a.swap(b);
337  }
338 
340  public:
341  explicit UnscheduledProductHolder(std::shared_ptr<BranchDescription const> bd, Principal* principal) :
343  virtual ~UnscheduledProductHolder();
344  private:
345  virtual void swap_(ProductHolderBase& rhs) override {
346  UnscheduledProductHolder& other = dynamic_cast<UnscheduledProductHolder&>(rhs);
349  }
350  virtual ProductData const* resolveProduct_(ResolveStatus& resolveStatus,
351  bool skipCurrentProcess,
353  ModuleCallingContext const* mcc) const override;
354  virtual void resetStatus_() override {theStatus_ = UnscheduledNotRun;}
355  virtual bool onDemand_() const override {return status() == UnscheduledNotRun;}
356  virtual ProductData const& getProductData() const override {return productData_;}
357  virtual ProductData& getProductData() override {return productData_;}
358  virtual ProductStatus& status_() const override {return theStatus_;}
359 
363  };
364 
365  // Free swap function
367  a.swap(b);
368  }
369 
371  public:
372  explicit SourceProductHolder(std::shared_ptr<BranchDescription const> bd) : ProducedProductHolder(), productData_(bd), theStatus_(NotPut) {}
373  virtual ~SourceProductHolder();
374  private:
375  virtual void swap_(ProductHolderBase& rhs) override {
376  SourceProductHolder& other = dynamic_cast<SourceProductHolder&>(rhs);
379  }
380  virtual ProductData const* resolveProduct_(ResolveStatus& resolveStatus,
381  bool skipCurrentProcess,
383  ModuleCallingContext const* mcc) const override;
384  virtual void resetStatus_() override {theStatus_ = NotPut;}
385  virtual bool onDemand_() const override {return false;}
386  virtual ProductData const& getProductData() const override {return productData_;}
387  virtual ProductData& getProductData() override {return productData_;}
388  virtual ProductStatus& status_() const override {return theStatus_;}
389 
392  };
393 
395  public:
397  explicit AliasProductHolder(std::shared_ptr<BranchDescription const> bd, ProducedProductHolder& realProduct) : ProductHolderBase(), realProduct_(realProduct), bd_(bd) {}
398  virtual ~AliasProductHolder();
400  private:
401  virtual void swap_(ProductHolderBase& rhs) override {
402  AliasProductHolder& other = dynamic_cast<AliasProductHolder&>(rhs);
404  std::swap(bd_, other.bd_);
405  }
406  virtual ProductData const* resolveProduct_(ResolveStatus& resolveStatus,
407  bool skipCurrentProcess,
409  ModuleCallingContext const* mcc) const override {return realProduct_.resolveProduct(resolveStatus, skipCurrentProcess, sra, mcc);}
410  virtual bool onDemand_() const override {return realProduct_.onDemand();}
411  virtual void resetStatus_() override {realProduct_.resetStatus();}
412  virtual bool productUnavailable_() const override {return realProduct_.productUnavailable();}
413  virtual bool productWasDeleted_() const override {return realProduct_.productWasDeleted();}
414  virtual void checkType_(WrapperBase const& prod) const override {realProduct_.checkType(prod);}
415  virtual ProductData const& getProductData() const override {return realProduct_.productData();}
416  virtual ProductData& getProductData() override {return realProduct_.productData();}
417  virtual void setProductDeleted_() override {realProduct_.setProductDeleted();}
418  virtual void putProduct_(std::unique_ptr<WrapperBase> edp, ProductProvenance const& productProvenance) override {
419  realProduct_.putProduct(std::move(edp), productProvenance);
420  }
421  virtual void putProduct_(std::unique_ptr<WrapperBase> edp) const override {
422  realProduct_.putProduct(std::move(edp));
423  }
424  virtual void mergeProduct_(std::unique_ptr<WrapperBase> edp, ProductProvenance& productProvenance) override {
425  realProduct_.mergeProduct(std::move(edp), productProvenance);
426  }
427  virtual void mergeProduct_(std::unique_ptr<WrapperBase> edp) const override {
428  realProduct_.mergeProduct(std::move(edp));
429  }
430  virtual bool putOrMergeProduct_() const override {
432  }
433  virtual BranchDescription const& branchDescription_() const override {return *bd_;}
434  virtual void resetBranchDescription_(std::shared_ptr<BranchDescription const> bd) override {bd_ = bd;}
435  virtual std::string const& resolvedModuleLabel_() const override {return realProduct_.moduleLabel();}
436  virtual void setProvenance_(std::shared_ptr<ProductProvenanceRetriever> provRetriever, ProcessHistory const& ph, ProductID const& pid) override;
437  virtual void setProcessHistory_(ProcessHistory const& ph) override;
438  virtual ProductProvenance* productProvenancePtr_() const override;
439  virtual void resetProductData_() override;
440  virtual bool singleProduct_() const override;
441  virtual void setPrincipal_(Principal* principal) override;
442 
444  std::shared_ptr<BranchDescription const> bd_;
445  };
446 
448  public:
450  NoProcessProductHolder(std::vector<ProductHolderIndex> const& matchingHolders,
451  std::vector<bool> const& ambiguous,
453  virtual ~NoProcessProductHolder();
454  private:
455  virtual ProductData const& getProductData() const override;
456  virtual ProductData& getProductData() override;
457  virtual ProductData const* resolveProduct_(ResolveStatus& resolveStatus,
458  bool skipCurrentProcess,
460  ModuleCallingContext const* mcc) const override;
461  virtual void swap_(ProductHolderBase& rhs) override;
462  virtual bool onDemand_() const override;
463  virtual bool productUnavailable_() const override;
464  virtual bool productWasDeleted_() const override;
465  virtual void putProduct_(std::unique_ptr<WrapperBase> edp, ProductProvenance const& productProvenance) override;
466  virtual void putProduct_(std::unique_ptr<WrapperBase> edp) const override;
467  virtual void mergeProduct_(std::unique_ptr<WrapperBase> edp, ProductProvenance& productProvenance) override;
468  virtual void mergeProduct_(std::unique_ptr<WrapperBase> edp) const override;
469  virtual bool putOrMergeProduct_() const override;
470  virtual void checkType_(WrapperBase const& prod) const override;
471  virtual void resetStatus_() override;
472  virtual void setProductDeleted_() override;
473  virtual BranchDescription const& branchDescription_() const override;
474  virtual void resetBranchDescription_(std::shared_ptr<BranchDescription const> bd) override;
475  virtual std::string const& resolvedModuleLabel_() const override {return moduleLabel();}
476  virtual void setProvenance_(std::shared_ptr<ProductProvenanceRetriever> provRetriever, ProcessHistory const& ph, ProductID const& pid) override;
477  virtual void setProcessHistory_(ProcessHistory const& ph) override;
478  virtual ProductProvenance* productProvenancePtr_() const override;
479  virtual void resetProductData_() override;
480  virtual bool singleProduct_() const override;
481  virtual void setPrincipal_(Principal* principal) override;
482 
483  std::vector<ProductHolderIndex> matchingHolders_;
484  std::vector<bool> ambiguous_;
486  };
487 
488  // Free swap function
490  a.swap(b);
491  }
492 }
493 
494 #endif
void setProduct(std::unique_ptr< WrapperBase > prod) const
virtual ProductStatus & status_() const =0
void setPrincipal(Principal *principal)
Definition: ProductHolder.h:98
virtual void resetBranchDescription_(std::shared_ptr< BranchDescription const > bd) override
WrapperBase * product() const
Definition: ProductHolder.h:84
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 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
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 ProductData const * resolveProduct_(ResolveStatus &resolveStatus, bool skipCurrentProcess, SharedResourcesAcquirer *sra, ModuleCallingContext const *mcc) const 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)
ProductHolderBase & operator=(ProductHolderBase const &)=delete
virtual void setProcessHistory_(ProcessHistory const &ph)=0
virtual std::string const & resolvedModuleLabel_() const override
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 void checkType_(WrapperBase const &prod) const override
virtual BranchDescription const & branchDescription_() const =0
void write(std::ostream &os) const
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 ProductData const * resolveProduct_(ResolveStatus &resolveStatus, bool skipCurrentProcess, SharedResourcesAcquirer *sra, ModuleCallingContext const *mcc) const 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
ProductProvenance * productProvenancePtr() const
Definition: ProductHolder.h:87
virtual ProductProvenance * productProvenancePtr_() const override
virtual void putProduct_(std::unique_ptr< WrapperBase > edp, ProductProvenance const &productProvenance) override
bool singleProduct() const
Definition: ProductHolder.h:96
BranchDescription const & branchDescription() const
Definition: ProductHolder.h:93
UnscheduledProductHolder(std::shared_ptr< BranchDescription const > bd, Principal *principal)
virtual ProductData const * resolveProduct_(ResolveStatus &resolveStatus, bool skipCurrentProcess, SharedResourcesAcquirer *sra, ModuleCallingContext const *mcc) const =0
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:78
virtual void mergeProduct_(std::unique_ptr< WrapperBase > edp, ProductProvenance &productProvenance) override
virtual bool putOrMergeProduct_() const override
virtual ProductData const * resolveProduct_(ResolveStatus &resolveStatus, bool skipCurrentProcess, SharedResourcesAcquirer *sra, ModuleCallingContext const *mcc) 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:81
ProductData const & productData() const
Definition: ProductHolder.h:41
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 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 ProductData const * resolveProduct_(ResolveStatus &resolveStatus, bool skipCurrentProcess, SharedResourcesAcquirer *sra, ModuleCallingContext const *mcc) const override
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
void mergeProduct(std::unique_ptr< WrapperBase > edp) const
bool putOrMergeProduct() const
tuple pid
Definition: sysUtil.py:22
ProductData const * resolveProduct(ResolveStatus &resolveStatus, bool skipCurrentProcess, SharedResourcesAcquirer *sra, ModuleCallingContext const *mcc) const
Definition: ProductHolder.h:49
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:45
ProductStatus & status() const
virtual ProductData const * resolveProduct_(ResolveStatus &resolveStatus, bool skipCurrentProcess, SharedResourcesAcquirer *sra, ModuleCallingContext const *mcc) const override
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 ProductData const * resolveProduct_(ResolveStatus &resolveStatus, bool skipCurrentProcess, SharedResourcesAcquirer *sra, ModuleCallingContext const *mcc) 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:72