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  Principal const& principal,
51  bool skipCurrentProcess,
53  ModuleCallingContext const* mcc) const {
54  return resolveProduct_(resolveStatus, principal, skipCurrentProcess, sra, mcc);
55  }
56 
57  void resetStatus () {
58  resetStatus_();
59  }
60 
63  }
64 
66 
67  void unsafe_deleteProduct() const {
70  }
71 
72  // product is not available (dropped or never created)
73  bool productUnavailable() const {return productUnavailable_();}
74 
75  // provenance is currently available
76  bool provenanceAvailable() const;
77 
78  // Scheduled for on demand production
79  bool onDemand() const {return onDemand_();}
80 
81  // Product was deleted early in order to save memory
82  bool productWasDeleted() const {return productWasDeleted_();}
83 
84  // Retrieves a pointer to the wrapper of the product.
85  WrapperBase const * product() const { return getProductData().wrapper(); }
86 
88 
89  // Retrieves pointer to the per event(lumi)(run) provenance.
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 
98  // Sets the pointer to the event independent provenance.
99  void resetBranchDescription(std::shared_ptr<BranchDescription const> bd) {resetBranchDescription_(bd);}
100 
101  // Retrieves a reference to the module label.
103 
104  // Same as moduleLabel except in the case of an AliasProductHolder, in which
105  // case it resolves the module which actually produces the product and returns
106  // its module label
108 
109  // Retrieves a reference to the product instance name
111 
112  // Retrieves a reference to the process name
114 
115  // Retrieves pointer to a class containing both the event independent and the per even provenance.
116  Provenance const* provenance() const;
117 
118  // Initializes the event independent portion of the provenance, plus the process history ID, the product ID, and the provRetriever.
119  void setProvenance(ProductProvenanceRetriever const* provRetriever, ProcessHistory const& ph, ProductID const& pid) { setProvenance_(provRetriever, ph, pid); }
120 
121  // Initializes the process history.
123 
124  // Write the product to the stream.
125  void write(std::ostream& os) const;
126 
127  // Return the type of the product stored in this ProductHolder.
128  // We are relying on the fact that Type instances are small, and
129  // so we are free to copy them at will.
130  TypeID productType() const;
131 
132  // Retrieves the product ID of the product.
133  ProductID const& productID() const {return getProductData().provenance().productID();}
134 
135  // Puts the product and its per event(lumi)(run) provenance into the ProductHolder.
136  void putProduct(std::unique_ptr<WrapperBase> edp, ProductProvenance const& productProvenance) const {
137  putProduct_(std::move(edp), productProvenance);
138  }
139 
140  // Puts the product into the ProductHolder.
141  void putProduct(std::unique_ptr<WrapperBase> edp) const {
142  putProduct_(std::move(edp));
143  }
144 
145  // This returns true if it will be put, false if it will be merged
146  bool putOrMergeProduct() const {
147  return putOrMergeProduct_();
148  }
149 
150  // merges the product with the pre-existing product
151  void mergeProduct(std::unique_ptr<WrapperBase> edp, ProductProvenance const & productProvenance) const {
152  mergeProduct_(std::move(edp), productProvenance);
153  }
154 
155  void mergeProduct(std::unique_ptr<WrapperBase> edp) const {
156  mergeProduct_(std::move(edp));
157  }
158 
159  // Merges two instances of the product.
160  void mergeTheProduct(std::unique_ptr<WrapperBase> edp) const;
161 
162  void reallyCheckType(WrapperBase const& prod) const;
163 
164  void checkType(WrapperBase const& prod) const {
165  checkType_(prod);
166  }
167 
168  void swap(ProductHolderBase& rhs) {swap_(rhs);}
169 
170  void throwProductDeletedException() const;
171 
172  private:
174 
175  virtual ProductData const& getProductData() const = 0;
176  virtual ProductData& getProductData() = 0;
177  virtual ProductData const* resolveProduct_(ResolveStatus& resolveStatus,
178  Principal const& principal,
179  bool skipCurrentProcess,
181  ModuleCallingContext const* mcc) const = 0;
182  virtual void swap_(ProductHolderBase& rhs) = 0;
183  virtual bool onDemand_() const = 0;
184  virtual bool productUnavailable_() const = 0;
185  virtual bool productWasDeleted_() const = 0;
186  virtual void putProduct_(std::unique_ptr<WrapperBase> edp, ProductProvenance const& productProvenance) const = 0;
187  virtual void putProduct_(std::unique_ptr<WrapperBase> edp) const = 0;
188  virtual void mergeProduct_(std::unique_ptr<WrapperBase> edp, ProductProvenance const& productProvenance) const = 0;
189  virtual void mergeProduct_(std::unique_ptr<WrapperBase> edp) const = 0;
190  virtual bool putOrMergeProduct_() const = 0;
191  virtual void checkType_(WrapperBase const& prod) const = 0;
192  virtual void resetStatus_() = 0;
193  virtual void setProductDeleted_() const = 0;
194  virtual BranchDescription const& branchDescription_() const = 0;
195  virtual void resetBranchDescription_(std::shared_ptr<BranchDescription const> bd) = 0;
196  virtual std::string const& resolvedModuleLabel_() const = 0;
197  virtual void setProvenance_(ProductProvenanceRetriever const* provRetriever, ProcessHistory const& ph, ProductID const& pid) = 0;
198  virtual void setProcessHistory_(ProcessHistory const& ph) = 0;
199  virtual ProductProvenance const* productProvenancePtr_() const = 0;
200  virtual void resetProductData_() = 0;
201  virtual bool singleProduct_() const = 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) :
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  Principal const& principal,
233  bool skipCurrentProcess,
235  ModuleCallingContext const* mcc) const override;
236  virtual void putProduct_(std::unique_ptr<WrapperBase> edp, ProductProvenance const& productProvenance) const override;
237  virtual void putProduct_(std::unique_ptr<WrapperBase> edp) const override;
238  virtual void mergeProduct_(std::unique_ptr<WrapperBase> edp, ProductProvenance const& productProvenance) const override;
239  virtual void mergeProduct_(std::unique_ptr<WrapperBase> edp) const override;
240  virtual bool putOrMergeProduct_() const override;
241  virtual void checkType_(WrapperBase const&) const override {}
242  virtual void resetStatus_() override {productIsUnavailable_ = false;
243  productHasBeenDeleted_=false;}
244  virtual bool onDemand_() const override {return false;}
245  virtual bool productUnavailable_() const override;
246  virtual bool productWasDeleted_() const override {return productHasBeenDeleted_;}
247  virtual ProductData const& getProductData() const override {return productData_;}
248  virtual ProductData& getProductData() override {return productData_;}
249  virtual void setProductDeleted_() const override {productHasBeenDeleted_ = true;}
250  virtual BranchDescription const& branchDescription_() const override {return *productData().branchDescription();}
251  virtual void resetBranchDescription_(std::shared_ptr<BranchDescription const> bd) override {productData().resetBranchDescription(bd);}
252  virtual std::string const& resolvedModuleLabel_() const override {return moduleLabel();}
253  virtual void setProvenance_(ProductProvenanceRetriever const* provRetriever, ProcessHistory const& ph, ProductID const& pid) override;
254  virtual void setProcessHistory_(ProcessHistory const& ph) override;
255  virtual ProductProvenance const* productProvenancePtr_() const override;
256  virtual void resetProductData_() override;
257  virtual bool singleProduct_() const override;
258 
260  mutable bool productIsUnavailable_;
262  };
263 
264  // Free swap function
266  a.swap(b);
267  }
268 
270  public:
272  Present = 0,
273  NotRun = 3,
275  NotPut = 5,
279  };
281  virtual ~ProducedProductHolder();
282  void producerStarted();
283  void producerCompleted();
284  ProductStatus& status() const {return status_();}
285  private:
286  virtual void putProduct_(std::unique_ptr<WrapperBase> edp, ProductProvenance const& productProvenance) const override;
287  virtual void putProduct_(std::unique_ptr<WrapperBase> edp) const override;
288  virtual void mergeProduct_(std::unique_ptr<WrapperBase> edp, ProductProvenance const& productProvenance) const override;
289  virtual void mergeProduct_(std::unique_ptr<WrapperBase> edp) const override;
290  virtual bool putOrMergeProduct_() const override;
291  virtual void checkType_(WrapperBase const& prod) const override {
292  reallyCheckType(prod);
293  }
294  virtual ProductStatus& status_() const = 0;
295  virtual bool productUnavailable_() const override;
296  virtual bool productWasDeleted_() const override;
297  virtual void setProductDeleted_() const override;
298  virtual BranchDescription const& branchDescription_() const override {return *productData().branchDescription();}
299  virtual void resetBranchDescription_(std::shared_ptr<BranchDescription const> bd) override {productData().resetBranchDescription(bd);}
300  virtual std::string const& resolvedModuleLabel_() const override {return moduleLabel();}
301  virtual void setProvenance_(ProductProvenanceRetriever const* provRetriever, ProcessHistory const& ph, ProductID const& pid) override;
302  virtual void setProcessHistory_(ProcessHistory const& ph) override;
303  virtual ProductProvenance const* productProvenancePtr_() const override;
304  virtual void resetProductData_() override;
305  virtual bool singleProduct_() const override;
306  };
307 
309  public:
310  explicit ScheduledProductHolder(std::shared_ptr<BranchDescription const> bd) : ProducedProductHolder(), productData_(bd), theStatus_(NotRun) {}
311  virtual ~ScheduledProductHolder();
312  private:
313  virtual void swap_(ProductHolderBase& rhs) override {
314  ScheduledProductHolder& other = dynamic_cast<ScheduledProductHolder&>(rhs);
317  }
318  virtual ProductData const* resolveProduct_(ResolveStatus& resolveStatus,
319  Principal const& principal,
320  bool skipCurrentProcess,
322  ModuleCallingContext const* mcc) const override;
323  virtual void resetStatus_() override {theStatus_ = NotRun;}
324  virtual bool onDemand_() const override {return false;}
325  virtual ProductData const& getProductData() const override {return productData_;}
326  virtual ProductData& getProductData() override {return productData_;}
327  virtual ProductStatus& status_() const override {return theStatus_;}
328 
331  };
332 
333  // Free swap function
335  a.swap(b);
336  }
337 
339  public:
340  explicit UnscheduledProductHolder(std::shared_ptr<BranchDescription const> bd) :
342  virtual ~UnscheduledProductHolder();
343  private:
344  virtual void swap_(ProductHolderBase& rhs) override {
345  UnscheduledProductHolder& other = dynamic_cast<UnscheduledProductHolder&>(rhs);
348  }
349  virtual ProductData const* resolveProduct_(ResolveStatus& resolveStatus,
350  Principal const& principal,
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 
362  };
363 
364  // Free swap function
366  a.swap(b);
367  }
368 
370  public:
371  explicit SourceProductHolder(std::shared_ptr<BranchDescription const> bd) : ProducedProductHolder(), productData_(bd), theStatus_(NotPut) {}
372  virtual ~SourceProductHolder();
373  private:
374  virtual void swap_(ProductHolderBase& rhs) override {
375  SourceProductHolder& other = dynamic_cast<SourceProductHolder&>(rhs);
378  }
379  virtual ProductData const* resolveProduct_(ResolveStatus& resolveStatus,
380  Principal const& principal,
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  Principal const& principal,
408  bool skipCurrentProcess,
410  ModuleCallingContext const* mcc) const override {return realProduct_.resolveProduct(resolveStatus, principal, skipCurrentProcess, sra, mcc);}
411  virtual bool onDemand_() const override {return realProduct_.onDemand();}
412  virtual void resetStatus_() override {realProduct_.resetStatus();}
413  virtual bool productUnavailable_() const override {return realProduct_.productUnavailable();}
414  virtual bool productWasDeleted_() const override {return realProduct_.productWasDeleted();}
415  virtual void checkType_(WrapperBase const& prod) const override {realProduct_.checkType(prod);}
416  virtual ProductData const& getProductData() const override {return realProduct_.productData();}
417  virtual ProductData& getProductData() override {return realProduct_.productData();}
418  virtual void setProductDeleted_() const override {realProduct_.setProductDeleted();}
419  virtual void putProduct_(std::unique_ptr<WrapperBase> edp, ProductProvenance const& productProvenance) const override {
420  realProduct_.putProduct(std::move(edp), productProvenance);
421  }
422  virtual void putProduct_(std::unique_ptr<WrapperBase> edp) const override {
424  }
425  virtual void mergeProduct_(std::unique_ptr<WrapperBase> edp, ProductProvenance const& productProvenance) const override {
426  realProduct_.mergeProduct(std::move(edp), productProvenance);
427  }
428  virtual void mergeProduct_(std::unique_ptr<WrapperBase> edp) const override {
430  }
431  virtual bool putOrMergeProduct_() const override {
433  }
434  virtual BranchDescription const& branchDescription_() const override {return *bd_;}
435  virtual void resetBranchDescription_(std::shared_ptr<BranchDescription const> bd) override {bd_ = bd;}
436  virtual std::string const& resolvedModuleLabel_() const override {return realProduct_.moduleLabel();}
437  virtual void setProvenance_(ProductProvenanceRetriever const* provRetriever, ProcessHistory const& ph, ProductID const& pid) override;
438  virtual void setProcessHistory_(ProcessHistory const& ph) override;
439  virtual ProductProvenance const* productProvenancePtr_() const override;
440  virtual void resetProductData_() override;
441  virtual bool singleProduct_() const 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);
452  virtual ~NoProcessProductHolder();
453  private:
454  virtual ProductData const& getProductData() const override;
455  virtual ProductData& getProductData() override;
456  virtual ProductData const* resolveProduct_(ResolveStatus& resolveStatus,
457  Principal const& principal,
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) const override;
466  virtual void putProduct_(std::unique_ptr<WrapperBase> edp) const override;
467  virtual void mergeProduct_(std::unique_ptr<WrapperBase> edp, ProductProvenance const& productProvenance) const 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_() const 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_(ProductProvenanceRetriever const* provRetriever, ProcessHistory const& ph, ProductID const& pid) override;
477  virtual void setProcessHistory_(ProcessHistory const& ph) override;
478  virtual ProductProvenance const* productProvenancePtr_() const override;
479  virtual void resetProductData_() override;
480  virtual bool singleProduct_() const override;
481 
482  std::vector<ProductHolderIndex> matchingHolders_;
483  std::vector<bool> ambiguous_;
484  };
485 
486  // Free swap function
488  a.swap(b);
489  }
490 }
491 
492 #endif
void setProduct(std::unique_ptr< WrapperBase > prod) const
Provenance const & provenance() const
Definition: ProductData.h:30
virtual ProductStatus & status_() const =0
virtual void resetBranchDescription_(std::shared_ptr< BranchDescription const > bd) override
virtual bool onDemand_() const =0
virtual void swap_(ProductHolderBase &rhs) override
WrapperBase const * product() const
Definition: ProductHolder.h:85
virtual ProductData & getProductData() override
bool provenanceAvailable() const
UnscheduledProductHolder(std::shared_ptr< BranchDescription const > bd)
virtual ProductData & getProductData() override
virtual void resetBranchDescription_(std::shared_ptr< BranchDescription const > bd) override
virtual BranchDescription const & branchDescription_() const override
virtual ProductProvenance const * productProvenancePtr_() const override
void putProduct(std::unique_ptr< WrapperBase > edp) const
virtual void setProductDeleted_() const override
virtual void putProduct_(std::unique_ptr< WrapperBase > edp, ProductProvenance const &productProvenance) const override
std::shared_ptr< BranchDescription const > const & branchDescription() const
Definition: ProductData.h:26
virtual void resetProductData_() override
std::vector< ProductHolderIndex > matchingHolders_
virtual ProductData const & getProductData() const override
virtual bool onDemand_() const override
virtual void resetBranchDescription_(std::shared_ptr< BranchDescription const > bd) override
ProducedProductHolder::ProductStatus ProductStatus
void checkType(WrapperBase const &prod) const
virtual void setProductDeleted_() const =0
virtual void setProcessHistory_(ProcessHistory const &ph) override
void unsafe_deleteProduct() const
Definition: ProductHolder.h:67
virtual ProductStatus & status_() const override
virtual void setProvenance_(ProductProvenanceRetriever const *provRetriever, ProcessHistory const &ph, ProductID const &pid) override
virtual ProductData const & getProductData() const override
virtual ProductStatus & status_() const override
virtual void resetStatus_() override
virtual void setProductDeleted_() const override
virtual BranchDescription const & branchDescription_() const override
virtual void resetStatus_() override
ProducedProductHolder::ProductStatus ProductStatus
void resetBranchDescription(std::shared_ptr< BranchDescription const > bd)
Definition: ProductHolder.h:99
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
WrapperBase const * wrapper() const
Definition: ProductData.h:32
virtual void setProductDeleted_() const override
std::string const & processName() const
virtual bool onDemand_() const override
virtual ProductData const * resolveProduct_(ResolveStatus &resolveStatus, Principal const &principal, bool skipCurrentProcess, SharedResourcesAcquirer *sra, ModuleCallingContext const *mcc) const override
virtual ProductProvenance const * productProvenancePtr_() const override
virtual bool singleProduct_() const override
virtual void checkType_(WrapperBase const &prod) const override
virtual void setProvenance_(ProductProvenanceRetriever const *provRetriever, ProcessHistory const &ph, ProductID const &pid)=0
virtual BranchDescription const & branchDescription_() const =0
void write(std::ostream &os) const
void swap(Association< C > &lhs, Association< C > &rhs)
Definition: Association.h:116
void resetBranchDescription(std::shared_ptr< BranchDescription const > bd)
Definition: ProductData.cc:27
virtual void checkType_(WrapperBase const &prod) const override
std::string const & moduleLabel() const
bool productIsUnavailable() const
virtual ProductData & getProductData() override
virtual void resetStatus_() override
virtual void setProcessHistory_(ProcessHistory const &ph) override
virtual void resetStatus_() override
virtual bool singleProduct_() const =0
virtual void mergeProduct_(std::unique_ptr< WrapperBase > edp, ProductProvenance const &productProvenance) const override
virtual bool singleProduct_() const override
virtual void setProvenance_(ProductProvenanceRetriever const *provRetriever, ProcessHistory const &ph, ProductID const &pid) override
virtual void putProduct_(std::unique_ptr< WrapperBase > edp) const override
virtual bool putOrMergeProduct_() const override
virtual void mergeProduct_(std::unique_ptr< WrapperBase > edp, ProductProvenance const &productProvenance) const =0
bool singleProduct() const
Definition: ProductHolder.h:96
BranchDescription const & branchDescription() const
Definition: ProductHolder.h:93
Provenance const * provenance() const
virtual void setProcessHistory_(ProcessHistory const &ph) override
std::string const & moduleLabel() const
virtual bool productUnavailable_() const =0
InputProductHolder(std::shared_ptr< BranchDescription const > bd)
std::string const & productInstanceName() const
AliasProductHolder(std::shared_ptr< BranchDescription const > bd, ProducedProductHolder &realProduct)
ProductProvenance const * productProvenancePtr() const
Definition: ProductHolder.h:90
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 void checkType_(WrapperBase const &prod) const override
bool onDemand() const
Definition: ProductHolder.h:79
virtual bool putOrMergeProduct_() const override
virtual void checkType_(WrapperBase const &prod) const =0
virtual void resetProductData_() override
virtual void resetStatus_() override
def move
Definition: eostools.py:510
ProductID const & productID() const
virtual ProductData const * resolveProduct_(ResolveStatus &resolveStatus, Principal const &principal, bool skipCurrentProcess, SharedResourcesAcquirer *sra, ModuleCallingContext const *mcc) const override
virtual void resetBranchDescription_(std::shared_ptr< BranchDescription const > bd)=0
virtual ProductData const & getProductData() const override
virtual bool productUnavailable_() const override
virtual void putProduct_(std::unique_ptr< WrapperBase > edp, ProductProvenance const &productProvenance) const =0
virtual void swap_(ProductHolderBase &rhs) override
void swap(ProductHolderBase &rhs)
virtual void putProduct_(std::unique_ptr< WrapperBase > edp, ProductProvenance const &productProvenance) const override
bool productWasDeleted() const
Definition: ProductHolder.h:82
ProductData const & productData() const
Definition: ProductHolder.h:41
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
virtual ProductProvenance const * productProvenancePtr_() const =0
virtual ProductData const * resolveProduct_(ResolveStatus &resolveStatus, Principal const &principal, bool skipCurrentProcess, SharedResourcesAcquirer *sra, ModuleCallingContext const *mcc) const override
virtual void setProcessHistory_(ProcessHistory const &ph) override
virtual void setProductDeleted_() const override
virtual void resetStatus_()=0
virtual ProductProvenance const * productProvenancePtr_() const override
virtual bool onDemand_() const override
NoProcessProductHolder(std::vector< ProductHolderIndex > const &matchingHolders, std::vector< bool > const &ambiguous)
std::string const & resolvedModuleLabel() const
virtual bool onDemand_() const override
virtual ProductData const & getProductData() const override
virtual bool putOrMergeProduct_() const =0
virtual ProductProvenance const * productProvenancePtr_() const override
virtual ProductData const * resolveProduct_(ResolveStatus &resolveStatus, Principal const &principal, bool skipCurrentProcess, SharedResourcesAcquirer *sra, ModuleCallingContext const *mcc) const =0
virtual void swap_(ProductHolderBase &rhs) override
void throwProductDeletedException() 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, Principal const &principal, bool skipCurrentProcess, SharedResourcesAcquirer *sra, ModuleCallingContext const *mcc) const override
void mergeProduct(std::unique_ptr< WrapperBase > edp) const
void setProvenance(ProductProvenanceRetriever const *provRetriever, ProcessHistory const &ph, ProductID const &pid)
bool putOrMergeProduct() const
void putProduct(std::unique_ptr< WrapperBase > edp, ProductProvenance const &productProvenance) const
tuple pid
Definition: sysUtil.py:22
void mergeProduct(std::unique_ptr< WrapperBase > edp, ProductProvenance const &productProvenance) const
void mergeTheProduct(std::unique_ptr< WrapperBase > edp) const
double b
Definition: hdecay.h:120
WrapperBase * product()
Definition: ProductHolder.h:87
virtual void putProduct_(std::unique_ptr< WrapperBase > edp, ProductProvenance const &productProvenance) const override
std::vector< bool > ambiguous_
virtual bool singleProduct_() const override
virtual void swap_(ProductHolderBase &rhs) override
virtual bool productWasDeleted_() const 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
ProductData const * resolveProduct(ResolveStatus &resolveStatus, Principal const &principal, bool skipCurrentProcess, SharedResourcesAcquirer *sra, ModuleCallingContext const *mcc) const
Definition: ProductHolder.h:49
virtual std::string const & resolvedModuleLabel_() const override
double a
Definition: hdecay.h:121
virtual void swap_(ProductHolderBase &rhs) override
virtual void setProvenance_(ProductProvenanceRetriever const *provRetriever, ProcessHistory const &ph, ProductID const &pid) override
virtual bool onDemand_() const override
ProductData & productData()
Definition: ProductHolder.h:45
ProductStatus & status() const
virtual ProductData const * resolveProduct_(ResolveStatus &resolveStatus, Principal const &principal, bool skipCurrentProcess, SharedResourcesAcquirer *sra, ModuleCallingContext const *mcc) const override
std::shared_ptr< BranchDescription const > bd_
virtual std::string const & resolvedModuleLabel_() const override
virtual ProductData const & getProductData() const override
WrapperBase * unsafe_product() const
virtual void putProduct_(std::unique_ptr< WrapperBase > edp, ProductProvenance const &productProvenance) const override
virtual bool singleProduct_() const override
ProductStatus & status() const
virtual void resetProductData_() override
virtual bool productWasDeleted_() const override
virtual bool productWasDeleted_() const =0
ProductID const & productID() const
Definition: Provenance.h:67
virtual BranchDescription const & branchDescription_() const override
virtual ProductData const & getProductData() const override
void unsafe_resetProductData() const
Definition: ProductData.h:55
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)
TypeID productType() const
virtual void mergeProduct_(std::unique_ptr< WrapperBase > edp, ProductProvenance const &productProvenance) const override
virtual void setProvenance_(ProductProvenanceRetriever const *provRetriever, ProcessHistory const &ph, ProductID const &pid) override
virtual void mergeProduct_(std::unique_ptr< WrapperBase > edp, ProductProvenance const &productProvenance) const override
virtual bool productWasDeleted_() const override
virtual void mergeProduct_(std::unique_ptr< WrapperBase > edp, ProductProvenance const &productProvenance) const override
std::string const & productInstanceName() const
virtual ProductData const * resolveProduct_(ResolveStatus &resolveStatus, Principal const &principal, bool skipCurrentProcess, SharedResourcesAcquirer *sra, ModuleCallingContext const *mcc) const override
virtual ProductData & getProductData() override
ProducedProductHolder & realProduct_
WrapperBase * unsafe_wrapper() const
Definition: ProductData.h:34
virtual std::string const & resolvedModuleLabel_() const =0
bool productUnavailable() const
Definition: ProductHolder.h:73