CMS 3D CMS Logo

ProductResolvers.h
Go to the documentation of this file.
1 #ifndef FWCore_Framework_ProductResolvers_h
2 #define FWCore_Framework_ProductResolvers_h
3 
4 /*----------------------------------------------------------------------
5 
6 ProductResolver: 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 ----------------------------------------------------------------------*/
19 
20 #include <memory>
21 #include <atomic>
22 
23 #include <string>
24 
25 namespace edm {
26  class MergeableRunProductMetadata;
27  class ProductProvenanceRetriever;
28  class DelayedReader;
29  class ModuleCallingContext;
31  class Principal;
33  class Worker;
34  class ServiceToken;
35 
37  public:
39 
40  // Give AliasProductResolver and SwitchBaseProductResolver access by moving this method to public
41  void resetProductData_(bool deleteEarly) override = 0;
42  };
43 
45  public:
46  enum class ProductStatus { ProductSet, NotPut, ResolveFailed, ResolveNotRun, ProductDeleted };
47 
48  DataManagingProductResolver(std::shared_ptr<BranchDescription const> bd, ProductStatus iDefaultStatus)
50  productData_(bd),
51  theStatus_(iDefaultStatus),
52  defaultStatus_(iDefaultStatus) {}
53 
54  void connectTo(ProductResolverBase const&, Principal const*) final;
55 
56  void resetStatus() { theStatus_ = defaultStatus_; }
57 
58  void resetProductData_(bool deleteEarly) override;
59 
60  protected:
61  void setProduct(std::unique_ptr<WrapperBase> edp) const;
62  ProductStatus status() const { return theStatus_; }
63  ProductStatus defaultStatus() const { return defaultStatus_; }
64  void setFailedStatus() const { theStatus_ = ProductStatus::ResolveFailed; }
65  //Handle the boilerplate code needed for resolveProduct_
66  template <bool callResolver, typename FUNC>
67  Resolution resolveProductImpl(FUNC resolver) const;
68  void setMergeableRunProductMetadataInProductData(MergeableRunProductMetadata const*);
69 
70  private:
71  void throwProductDeletedException() const;
72  void checkType(WrapperBase const& prod) const;
73  ProductData const& getProductData() const { return productData_; }
74  virtual bool isFromCurrentProcess() const = 0;
75  // merges the product with the pre-existing product
76  void mergeProduct(std::unique_ptr<WrapperBase> edp, MergeableRunProductMetadata const*) const;
77 
78  void putOrMergeProduct_(std::unique_ptr<WrapperBase> prod,
79  MergeableRunProductMetadata const* mergeableRunProductMetadata) const final;
80  bool productUnavailable_() const final;
81  bool productResolved_() const final;
82  bool productWasDeleted_() const final;
83  bool productWasFetchedAndIsValid_(bool iSkipCurrentProcess) const final;
84 
85  BranchDescription const& branchDescription_() const final { return *getProductData().branchDescription(); }
86  void resetBranchDescription_(std::shared_ptr<BranchDescription const> bd) final {
87  productData_.resetBranchDescription(bd);
88  }
89  Provenance const* provenance_() const final { return &productData_.provenance(); }
90 
91  std::string const& resolvedModuleLabel_() const final { return moduleLabel(); }
92  void setProvenance_(ProductProvenanceRetriever const* provRetriever,
93  ProcessHistory const& ph,
94  ProductID const& pid) final;
95  void setProcessHistory_(ProcessHistory const& ph) final;
96  ProductProvenance const* productProvenancePtr_() const final;
97  bool singleProduct_() const final;
98 
100  mutable std::atomic<ProductStatus> theStatus_;
102  };
103 
105  public:
106  explicit InputProductResolver(std::shared_ptr<BranchDescription const> bd)
107  : DataManagingProductResolver(bd, ProductStatus::ResolveNotRun), m_prefetchRequested{false}, aux_{nullptr} {}
108 
109  void setupUnscheduled(UnscheduledConfigurator const&) final;
110 
111  private:
112  bool isFromCurrentProcess() const final;
113 
115  bool skipCurrentProcess,
117  ModuleCallingContext const* mcc) const override;
118  void prefetchAsync_(WaitingTask* waitTask,
119  Principal const& principal,
120  bool skipCurrentProcess,
121  ServiceToken const& token,
123  ModuleCallingContext const* mcc) const override;
124  void putProduct_(std::unique_ptr<WrapperBase> edp) const override;
125 
126  void retrieveAndMerge_(Principal const& principal,
127  MergeableRunProductMetadata const* mergeableRunProductMetadata) const override;
128 
130 
131  bool unscheduledWasNotRun_() const final { return false; }
132 
133  void resetProductData_(bool deleteEarly) override;
134 
135  mutable std::atomic<bool> m_prefetchRequested;
137  UnscheduledAuxiliary const* aux_; //provides access to the delayedGet signals
138  };
139 
141  public:
142  ProducedProductResolver(std::shared_ptr<BranchDescription const> bd, ProductStatus iDefaultStatus)
143  : DataManagingProductResolver(bd, iDefaultStatus) {
144  assert(bd->produced());
145  }
146 
147  protected:
148  void putProduct_(std::unique_ptr<WrapperBase> edp) const override;
149 
150  private:
151  bool isFromCurrentProcess() const final;
152  };
153 
155  public:
156  explicit PuttableProductResolver(std::shared_ptr<BranchDescription const> bd)
157  : ProducedProductResolver(bd, ProductStatus::NotPut), worker_(nullptr), prefetchRequested_(false) {}
158 
159  void setupUnscheduled(UnscheduledConfigurator const&) final;
160 
161  private:
163  bool skipCurrentProcess,
165  ModuleCallingContext const* mcc) const override;
166  void prefetchAsync_(WaitingTask* waitTask,
167  Principal const& principal,
168  bool skipCurrentProcess,
169  ServiceToken const& token,
171  ModuleCallingContext const* mcc) const override;
172  bool unscheduledWasNotRun_() const override { return false; }
173 
174  void putProduct_(std::unique_ptr<WrapperBase> edp) const override;
175  void resetProductData_(bool deleteEarly) override;
176 
179  mutable std::atomic<bool> prefetchRequested_;
180  };
181 
183  public:
184  explicit UnscheduledProductResolver(std::shared_ptr<BranchDescription const> bd)
185  : ProducedProductResolver(bd, ProductStatus::ResolveNotRun), aux_(nullptr), prefetchRequested_(false) {}
186 
187  void setupUnscheduled(UnscheduledConfigurator const&) final;
188 
189  private:
191  bool skipCurrentProcess,
193  ModuleCallingContext const* mcc) const override;
194  void prefetchAsync_(WaitingTask* waitTask,
195  Principal const& principal,
196  bool skipCurrentProcess,
197  ServiceToken const& token,
199  ModuleCallingContext const* mcc) const override;
200  bool unscheduledWasNotRun_() const override { return status() == ProductStatus::ResolveNotRun; }
201 
202  void resetProductData_(bool deleteEarly) override;
203 
207  mutable std::atomic<bool> prefetchRequested_;
208  };
209 
211  public:
213  explicit AliasProductResolver(std::shared_ptr<BranchDescription const> bd,
215  : DataManagingOrAliasProductResolver(), realProduct_(realProduct), bd_(bd) {}
216 
217  void connectTo(ProductResolverBase const& iOther, Principal const* iParentPrincipal) final {
218  realProduct_.connectTo(iOther, iParentPrincipal);
219  };
220 
221  private:
223  bool skipCurrentProcess,
225  ModuleCallingContext const* mcc) const override {
226  return realProduct_.resolveProduct(principal, skipCurrentProcess, sra, mcc);
227  }
228  void prefetchAsync_(WaitingTask* waitTask,
229  Principal const& principal,
230  bool skipCurrentProcess,
231  ServiceToken const& token,
233  ModuleCallingContext const* mcc) const override {
234  realProduct_.prefetchAsync(waitTask, principal, skipCurrentProcess, token, sra, mcc);
235  }
236  bool unscheduledWasNotRun_() const override { return realProduct_.unscheduledWasNotRun(); }
237  bool productUnavailable_() const override { return realProduct_.productUnavailable(); }
238  bool productResolved_() const final { return realProduct_.productResolved(); }
239  bool productWasDeleted_() const override { return realProduct_.productWasDeleted(); }
240  bool productWasFetchedAndIsValid_(bool iSkipCurrentProcess) const final {
241  return realProduct_.productWasFetchedAndIsValid(iSkipCurrentProcess);
242  }
243 
244  void putProduct_(std::unique_ptr<WrapperBase> edp) const override;
245  void putOrMergeProduct_(std::unique_ptr<WrapperBase> prod,
246  MergeableRunProductMetadata const* mergeableRunProductMetadata) const final;
247  BranchDescription const& branchDescription_() const override { return *bd_; }
248  void resetBranchDescription_(std::shared_ptr<BranchDescription const> bd) override { bd_ = bd; }
249  Provenance const* provenance_() const final { return realProduct_.provenance(); }
250 
251  std::string const& resolvedModuleLabel_() const override { return realProduct_.moduleLabel(); }
252  void setProvenance_(ProductProvenanceRetriever const* provRetriever,
253  ProcessHistory const& ph,
254  ProductID const& pid) override;
255  void setProcessHistory_(ProcessHistory const& ph) override;
256  ProductProvenance const* productProvenancePtr_() const override;
257  void resetProductData_(bool deleteEarly) override;
258  bool singleProduct_() const override;
259 
261  std::shared_ptr<BranchDescription const> bd_;
262  };
263 
264  // Switch is a mixture of DataManaging (for worker and provenance) and Alias (for product)
266  public:
268  SwitchBaseProductResolver(std::shared_ptr<BranchDescription const> bd,
270 
271  void connectTo(ProductResolverBase const& iOther, Principal const* iParentPrincipal) final;
272  void setupUnscheduled(UnscheduledConfigurator const& iConfigure) final;
273 
274  protected:
275  Resolution resolveProductImpl(Resolution) const;
276  WaitingTaskList& waitingTasks() const { return waitingTasks_; }
277  Worker* worker() const { return worker_; }
278  ProductStatus status() const { return status_; }
279  DataManagingOrAliasProductResolver const& realProduct() const { return realProduct_; }
280  std::atomic<bool>& prefetchRequested() const { return prefetchRequested_; }
281 
282  private:
283  bool productResolved_() const final;
284  bool productWasDeleted_() const final { return realProduct_.productWasDeleted(); }
285  bool productWasFetchedAndIsValid_(bool iSkipCurrentProcess) const final {
286  return realProduct_.productWasFetchedAndIsValid(iSkipCurrentProcess);
287  }
288  void putProduct_(std::unique_ptr<WrapperBase> edp) const final;
289  void putOrMergeProduct_(std::unique_ptr<WrapperBase> edp,
290  MergeableRunProductMetadata const* mergeableRunProductMetadata) const final;
291  BranchDescription const& branchDescription_() const final {
292  return *productData_.branchDescription();
293  ;
294  }
295  void resetBranchDescription_(std::shared_ptr<BranchDescription const> bd) final {
296  productData_.resetBranchDescription(bd);
297  }
298  Provenance const* provenance_() const final { return &productData_.provenance(); }
299  std::string const& resolvedModuleLabel_() const final { return moduleLabel(); }
300  void setProvenance_(ProductProvenanceRetriever const* provRetriever,
301  ProcessHistory const& ph,
302  ProductID const& pid) final;
303  void setProcessHistory_(ProcessHistory const& ph) final { productData_.setProcessHistory(ph); }
305  void resetProductData_(bool deleteEarly) final;
306  bool singleProduct_() const final { return true; }
307 
308  constexpr static const ProductStatus defaultStatus_ = ProductStatus::NotPut;
309 
310  // for "alias" view
312  // for "product" view
314  Worker* worker_ = nullptr;
316  mutable std::atomic<bool> prefetchRequested_;
317  // for provenance
319  // for filter in a Path
321  };
322 
323  // For the case when SwitchProducer is on a Path
325  public:
326  SwitchProducerProductResolver(std::shared_ptr<BranchDescription const> bd,
328  : SwitchBaseProductResolver(std::move(bd), realProduct) {}
329 
330  private:
332  bool skipCurrentProcess,
334  ModuleCallingContext const* mcc) const final;
335  void prefetchAsync_(WaitingTask* waitTask,
336  Principal const& principal,
337  bool skipCurrentProcess,
338  ServiceToken const& token,
340  ModuleCallingContext const* mcc) const final;
341  bool unscheduledWasNotRun_() const final { return false; }
342  bool productUnavailable_() const final;
343  };
344 
345  // For the case when SwitchProducer is not on any Path
347  public:
348  SwitchAliasProductResolver(std::shared_ptr<BranchDescription const> bd,
350  : SwitchBaseProductResolver(std::move(bd), realProduct) {}
351 
352  private:
354  bool skipCurrentProcess,
356  ModuleCallingContext const* mcc) const final;
357  void prefetchAsync_(WaitingTask* waitTask,
358  Principal const& principal,
359  bool skipCurrentProcess,
360  ServiceToken const& token,
362  ModuleCallingContext const* mcc) const final;
363  bool unscheduledWasNotRun_() const final { return realProduct().unscheduledWasNotRun(); }
364  bool productUnavailable_() const final { return realProduct().productUnavailable(); }
365  };
366 
368  public:
370  explicit ParentProcessProductResolver(std::shared_ptr<BranchDescription const> bd)
371  : ProductResolverBase(), realProduct_(nullptr), bd_(bd), provRetriever_(nullptr), parentPrincipal_(nullptr) {}
372 
373  void connectTo(ProductResolverBase const& iOther, Principal const* iParentPrincipal) final {
374  realProduct_ = &iOther;
375  parentPrincipal_ = iParentPrincipal;
376  };
377 
378  private:
380  bool skipCurrentProcess,
382  ModuleCallingContext const* mcc) const override {
383  skipCurrentProcess = false;
384  return realProduct_->resolveProduct(*parentPrincipal_, skipCurrentProcess, sra, mcc);
385  }
386  void prefetchAsync_(WaitingTask* waitTask,
387  Principal const& principal,
388  bool skipCurrentProcess,
389  ServiceToken const& token,
391  ModuleCallingContext const* mcc) const override {
392  skipCurrentProcess = false;
393  realProduct_->prefetchAsync(waitTask, *parentPrincipal_, skipCurrentProcess, token, sra, mcc);
394  }
395  bool unscheduledWasNotRun_() const override {
396  if (realProduct_)
397  return realProduct_->unscheduledWasNotRun();
398  throwNullRealProduct();
399  return false;
400  }
401  bool productUnavailable_() const override { return realProduct_->productUnavailable(); }
402  bool productResolved_() const final { return realProduct_->productResolved(); }
403  bool productWasDeleted_() const override { return realProduct_->productWasDeleted(); }
404  bool productWasFetchedAndIsValid_(bool iSkipCurrentProcess) const override {
405  iSkipCurrentProcess = false;
406  return realProduct_->productWasFetchedAndIsValid(iSkipCurrentProcess);
407  }
408 
409  void putProduct_(std::unique_ptr<WrapperBase> edp) const override;
410  void putOrMergeProduct_(std::unique_ptr<WrapperBase> prod,
411  MergeableRunProductMetadata const* mergeableRunProductMetadata) const final;
412  BranchDescription const& branchDescription_() const override { return *bd_; }
413  void resetBranchDescription_(std::shared_ptr<BranchDescription const> bd) override { bd_ = bd; }
414  Provenance const* provenance_() const final { return realProduct_->provenance(); }
415  std::string const& resolvedModuleLabel_() const override { return realProduct_->moduleLabel(); }
416  void setProvenance_(ProductProvenanceRetriever const* provRetriever,
417  ProcessHistory const& ph,
418  ProductID const& pid) override;
419  void setProcessHistory_(ProcessHistory const& ph) override;
420  ProductProvenance const* productProvenancePtr_() const override;
421  void resetProductData_(bool deleteEarly) override;
422  bool singleProduct_() const override;
423  void throwNullRealProduct() const;
424 
426  std::shared_ptr<BranchDescription const> bd_;
429  };
430 
432  public:
434  NoProcessProductResolver(std::vector<ProductResolverIndex> const& matchingHolders,
435  std::vector<bool> const& ambiguous,
436  bool madeAtEnd);
437 
438  void connectTo(ProductResolverBase const& iOther, Principal const*) final;
439 
440  void tryPrefetchResolverAsync(unsigned int iProcessingIndex,
441  Principal const& principal,
442  bool skipCurrentProcess,
444  ModuleCallingContext const* mcc,
445  ServiceToken token) const;
446 
447  bool dataValidFromResolver(unsigned int iProcessingIndex,
448  Principal const& principal,
449  bool iSkipCurrentProcess) const;
450 
451  void prefetchFailed(unsigned int iProcessingIndex,
452  Principal const& principal,
453  bool iSkipCurrentProcess,
454  std::exception_ptr iExceptPtr) const;
455 
456  private:
457  unsigned int unsetIndexValue() const;
458  Resolution resolveProduct_(Principal const& principal,
459  bool skipCurrentProcess,
461  ModuleCallingContext const* mcc) const override;
462  void prefetchAsync_(WaitingTask* waitTask,
463  Principal const& principal,
464  bool skipCurrentProcess,
465  ServiceToken const& token,
467  ModuleCallingContext const* mcc) const override;
468  bool unscheduledWasNotRun_() const override;
469  bool productUnavailable_() const override;
470  bool productWasDeleted_() const override;
471  bool productResolved_() const final;
472  bool productWasFetchedAndIsValid_(bool iSkipCurrentProcess) const override;
473 
474  void putProduct_(std::unique_ptr<WrapperBase> edp) const override;
475  void putOrMergeProduct_(std::unique_ptr<WrapperBase> prod,
476  MergeableRunProductMetadata const* mergeableRunProductMetadata) const final;
477  BranchDescription const& branchDescription_() const override;
478  void resetBranchDescription_(std::shared_ptr<BranchDescription const> bd) override;
479  Provenance const* provenance_() const override;
480 
481  std::string const& resolvedModuleLabel_() const override { return moduleLabel(); }
482  void setProvenance_(ProductProvenanceRetriever const* provRetriever,
483  ProcessHistory const& ph,
484  ProductID const& pid) override;
485  void setProcessHistory_(ProcessHistory const& ph) override;
486  ProductProvenance const* productProvenancePtr_() const override;
487  void resetProductData_(bool deleteEarly) override;
488  bool singleProduct_() const override;
489 
490  Resolution tryResolver(unsigned int index,
491  Principal const& principal,
492  bool skipCurrentProcess,
494  ModuleCallingContext const* mcc) const;
495 
496  void setCache(bool skipCurrentProcess, ProductResolverIndex index, std::exception_ptr exceptionPtr) const;
497 
498  std::vector<ProductResolverIndex> matchingHolders_;
499  std::vector<bool> ambiguous_;
502  mutable std::atomic<unsigned int> lastCheckIndex_;
503  mutable std::atomic<unsigned int> lastSkipCurrentCheckIndex_;
504  mutable std::atomic<bool> prefetchRequested_;
505  mutable std::atomic<bool> skippingPrefetchRequested_;
506  const bool madeAtEnd_;
507  };
508 
510  public:
513  : ProductResolverBase(), realResolverIndex_(iChoice) {}
514 
515  void connectTo(ProductResolverBase const& iOther, Principal const*) final;
516 
517  private:
519  bool skipCurrentProcess,
521  ModuleCallingContext const* mcc) const override;
522  void prefetchAsync_(WaitingTask* waitTask,
523  Principal const& principal,
524  bool skipCurrentProcess,
525  ServiceToken const& token,
527  ModuleCallingContext const* mcc) const override;
528  bool unscheduledWasNotRun_() const override;
529  bool productUnavailable_() const override;
530  bool productWasDeleted_() const override;
531  bool productResolved_() const final;
532  bool productWasFetchedAndIsValid_(bool iSkipCurrentProcess) const override;
533 
534  void putProduct_(std::unique_ptr<WrapperBase> edp) const override;
535  void putOrMergeProduct_(std::unique_ptr<WrapperBase> prod,
536  MergeableRunProductMetadata const* mergeableRunProductMetadata) const final;
537  BranchDescription const& branchDescription_() const override;
538  void resetBranchDescription_(std::shared_ptr<BranchDescription const> bd) override;
539  Provenance const* provenance_() const override;
540 
541  std::string const& resolvedModuleLabel_() const override { return moduleLabel(); }
542  void setProvenance_(ProductProvenanceRetriever const* provRetriever,
543  ProcessHistory const& ph,
544  ProductID const& pid) override;
545  void setProcessHistory_(ProcessHistory const& ph) override;
546  ProductProvenance const* productProvenancePtr_() const override;
547  void resetProductData_(bool deleteEarly) override;
548  bool singleProduct_() const override;
549 
551  };
552 
553 } // namespace edm
554 
555 #endif
bool productResolved_() const final
bool unscheduledWasNotRun_() const override
DataManagingOrAliasProductResolver const & realProduct() const
Provenance const * provenance() const
WaitingTaskList & waitingTasks() const
void connectTo(ProductResolverBase const &iOther, Principal const *iParentPrincipal) final
virtual bool productWasFetchedAndIsValid_(bool iSkipCurrentProcess) const =0
unsigned int ProductResolverIndex
SwitchProducerProductResolver(std::shared_ptr< BranchDescription const > bd, DataManagingOrAliasProductResolver &realProduct)
virtual std::string const & resolvedModuleLabel_() const =0
bool productWasDeleted_() const final
ProductProvenance const * productProvenancePtr_() const final
AliasProductResolver(std::shared_ptr< BranchDescription const > bd, DataManagingOrAliasProductResolver &realProduct)
ParentProcessProductResolver(std::shared_ptr< BranchDescription const > bd)
ProducedProductResolver::ProductStatus ProductStatus
std::string const & resolvedModuleLabel_() const override
std::shared_ptr< BranchDescription const > bd_
bool productUnavailable_() const override
bool productWasFetchedAndIsValid_(bool iSkipCurrentProcess) const final
UnscheduledProductResolver(std::shared_ptr< BranchDescription const > bd)
void resetBranchDescription_(std::shared_ptr< BranchDescription const > bd) final
UnscheduledAuxiliary const * aux_
virtual void resetBranchDescription_(std::shared_ptr< BranchDescription const > bd)=0
std::atomic< bool > prefetchRequested_
ProductStatus status() const
#define nullptr
bool unscheduledWasNotRun_() const final
Provenance const * provenance_() const final
virtual void setupUnscheduled(UnscheduledConfigurator const &)
virtual ProductProvenance const * productProvenancePtr_() const =0
std::string const & resolvedModuleLabel_() const final
WaitingTaskList m_waitingTasks
virtual void putProduct_(std::unique_ptr< WrapperBase > edp) const =0
virtual void prefetchAsync_(WaitingTask *waitTask, Principal const &principal, bool skipCurrentProcess, ServiceToken const &token, SharedResourcesAcquirer *sra, ModuleCallingContext const *mcc) const =0
DataManagingProductResolver(std::shared_ptr< BranchDescription const > bd, ProductStatus iDefaultStatus)
ProductProvenance const * productProvenance() const
Definition: Provenance.cc:35
Provenance const * provenance_() const final
ProducedProductResolver(std::shared_ptr< BranchDescription const > bd, ProductStatus iDefaultStatus)
std::atomic< bool > prefetchRequested_
ProductProvenanceRetriever const * provRetriever_
Resolution resolveProduct_(Principal const &principal, bool skipCurrentProcess, SharedResourcesAcquirer *sra, ModuleCallingContext const *mcc) const override
DataManagingOrAliasProductResolver & realProduct_
virtual void setProvenance_(ProductProvenanceRetriever const *provRetriever, ProcessHistory const &ph, ProductID const &pid)=0
std::string const & resolvedModuleLabel_() const override
void resetBranchDescription_(std::shared_ptr< BranchDescription const > bd) override
bool productUnavailable_() const override
static void throwProductDeletedException(ProductID const &pid, edm::EventPrincipal::ConstProductResolverPtr const phb)
BranchDescription const & branchDescription_() const override
ProducedProductResolver::ProductStatus ProductStatus
virtual void connectTo(ProductResolverBase const &, Principal const *)=0
UnscheduledAuxiliary const * aux_
def principal(options)
ProductResolverBase const * realProduct_
void setProcessHistory_(ProcessHistory const &ph) final
void connectTo(ProductResolverBase const &iOther, Principal const *iParentPrincipal) final
virtual BranchDescription const & branchDescription_() const =0
std::atomic< unsigned int > lastSkipCurrentCheckIndex_
InputProductResolver(std::shared_ptr< BranchDescription const > bd)
std::atomic< bool > prefetchRequested_
bool productWasDeleted_() const override
SwitchAliasProductResolver(std::shared_ptr< BranchDescription const > bd, DataManagingOrAliasProductResolver &realProduct)
bool productUnavailable_() const final
BranchDescription const & branchDescription_() const final
void resetBranchDescription_(std::shared_ptr< BranchDescription const > bd) override
std::atomic< bool > prefetchRequested_
std::atomic< bool > m_prefetchRequested
virtual void putOrMergeProduct_(std::unique_ptr< WrapperBase > edp, MergeableRunProductMetadata const *mergeableRunProductMetadata) const =0
std::atomic< unsigned int > lastCheckIndex_
bool unscheduledWasNotRun_() const override
virtual bool productResolved_() const =0
bool unscheduledWasNotRun_() const override
ProducedProductResolver::ProductStatus ProductStatus
std::atomic< bool > skippingPrefetchRequested_
std::atomic< ProductStatus > theStatus_
std::vector< bool > ambiguous_
bool productWasFetchedAndIsValid_(bool iSkipCurrentProcess) const final
Resolution resolveProduct_(Principal const &principal, bool skipCurrentProcess, SharedResourcesAcquirer *sra, ModuleCallingContext const *mcc) const override
virtual void setMergeableRunProductMetadata_(MergeableRunProductMetadata const *)
bool unscheduledWasNotRun_() const override
virtual void retrieveAndMerge_(Principal const &principal, MergeableRunProductMetadata const *mergeableRunProductMetadata) const
virtual bool unscheduledWasNotRun_() const =0
ProductStatus defaultStatus() const
BranchDescription const & branchDescription_() const final
BranchDescription const & branchDescription_() const override
DataManagingOrAliasProductResolver & realProduct_
std::string const & resolvedModuleLabel_() const final
std::vector< ProductResolverIndex > matchingHolders_
HLT enums.
bool productWasFetchedAndIsValid_(bool iSkipCurrentProcess) const override
bool productWasDeleted_() const override
void resetBranchDescription_(std::shared_ptr< BranchDescription const > bd) final
ProducedProductResolver::ProductStatus ProductStatus
virtual Provenance const * provenance_() const =0
void prefetchAsync_(WaitingTask *waitTask, Principal const &principal, bool skipCurrentProcess, ServiceToken const &token, SharedResourcesAcquirer *sra, ModuleCallingContext const *mcc) const override
ProductData const & getProductData() const
Provenance const * provenance_() const final
void resetProductData_(bool deleteEarly) override=0
std::shared_ptr< BranchDescription const > bd_
virtual bool productUnavailable_() const =0
void prefetchAsync_(WaitingTask *waitTask, Principal const &principal, bool skipCurrentProcess, ServiceToken const &token, SharedResourcesAcquirer *sra, ModuleCallingContext const *mcc) const override
virtual bool singleProduct_() const =0
std::atomic< bool > & prefetchRequested() const
std::string const & resolvedModuleLabel_() const override
bool unscheduledWasNotRun_() const final
PuttableProductResolver(std::shared_ptr< BranchDescription const > bd)
Provenance const * provenance_() const final
SingleChoiceNoProcessProductResolver(ProductResolverIndex iChoice)
virtual Resolution resolveProduct_(Principal const &principal, bool skipCurrentProcess, SharedResourcesAcquirer *sra, ModuleCallingContext const *mcc) const =0
def move(src, dest)
Definition: eostools.py:511
#define constexpr
std::string const & moduleLabel() const
virtual void setProcessHistory_(ProcessHistory const &ph)=0
virtual bool productWasDeleted_() const =0
ProductStatus status() const