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 ----------------------------------------------------------------------*/
27 
28 #include <atomic>
29 #include <memory>
30 #include <string>
31 
32 namespace edm {
33  class MergeableRunProductMetadata;
34  class ProductProvenanceRetriever;
35  class DelayedReader;
38  class Worker;
39  class ServiceToken;
40 
42  public:
44 
45  // Give AliasProductResolver and SwitchBaseProductResolver access by moving this method to public
46  void resetProductData_(bool deleteEarly) override = 0;
47  virtual ProductData const& getProductData() const = 0;
48  };
49 
51  public:
53 
54  DataManagingProductResolver(std::shared_ptr<BranchDescription const> bd, ProductStatus iDefaultStatus)
57  theStatus_(iDefaultStatus),
58  defaultStatus_(iDefaultStatus) {}
59 
60  void connectTo(ProductResolverBase const&, Principal const*) final;
61 
63 
64  void resetProductData_(bool deleteEarly) override;
65 
66  protected:
67  void setProduct(std::unique_ptr<WrapperBase> edp) const;
68  void setProduct(std::shared_ptr<WrapperBase> edp) const;
69  ProductStatus status() const { return theStatus_; }
72  //Handle the boilerplate code needed for resolveProduct_
73  template <bool callResolver, typename FUNC>
74  Resolution resolveProductImpl(FUNC resolver) const;
75  ProductData const& getProductData() const final { return productData_; }
77 
78  void checkType(WrapperBase const& prod) const;
79 
80  private:
81  void throwProductDeletedException() const;
82  virtual bool isFromCurrentProcess() const = 0;
83 
84  bool productUnavailable_() const final;
85  bool productResolved_() const final;
86  bool productWasDeleted_() const final;
87  bool productWasFetchedAndIsValid_(bool iSkipCurrentProcess) const final;
88 
90  void resetBranchDescription_(std::shared_ptr<BranchDescription const> bd) final {
92  }
93  Provenance const* provenance_() const final { return &productData_.provenance(); }
94 
95  std::string const& resolvedModuleLabel_() const final { return moduleLabel(); }
96  void setProductProvenanceRetriever_(ProductProvenanceRetriever const* provRetriever) final;
97  void setProductID_(ProductID const& pid) final;
99  bool singleProduct_() const final;
100 
102  mutable std::atomic<ProductStatus> theStatus_;
104  };
105 
107  public:
108  MergeableInputProductResolver(std::shared_ptr<BranchDescription const> bd, ProductStatus iDefaultStatus)
109  : DataManagingProductResolver(bd, iDefaultStatus) {}
110 
111  protected:
112  void setOrMergeProduct(std::shared_ptr<WrapperBase> prod,
113  MergeableRunProductMetadata const* mergeableRunProductMetadata) const;
114 
115  // merges the product with the pre-existing product
116  void mergeProduct(std::shared_ptr<WrapperBase> edp, MergeableRunProductMetadata const*) const;
117  };
118 
120  public:
121  explicit DelayedReaderInputProductResolver(std::shared_ptr<BranchDescription const> bd)
122  : MergeableInputProductResolver(bd, ProductStatus::ResolveNotRun), m_prefetchRequested{false}, aux_{nullptr} {
123  assert(bd->onDemand());
124  assert(not bd->produced());
125  }
126 
127  void setupUnscheduled(UnscheduledConfigurator const&) final;
128 
129  private:
130  bool isFromCurrentProcess() const final;
131 
132  Resolution resolveProduct_(Principal const& principal,
133  bool skipCurrentProcess,
135  ModuleCallingContext const* mcc) const override;
136  void prefetchAsync_(WaitingTaskHolder waitTask,
137  Principal const& principal,
138  bool skipCurrentProcess,
141  ModuleCallingContext const* mcc) const override;
142 
143  void retrieveAndMerge_(Principal const& principal,
144  MergeableRunProductMetadata const* mergeableRunProductMetadata) const override;
145 
146  void setMergeableRunProductMetadata_(MergeableRunProductMetadata const*) override;
147 
148  bool unscheduledWasNotRun_() const final { return false; }
149 
150  void resetProductData_(bool deleteEarly) override;
151 
152  mutable std::atomic<bool> m_prefetchRequested;
154  UnscheduledAuxiliary const* aux_; //provides access to the delayedGet signals
155  };
156 
158  public ProductPutterBase,
159  public ProductPutOrMergerBase {
160  public:
161  PutOnReadInputProductResolver(std::shared_ptr<BranchDescription const> bd)
162  : MergeableInputProductResolver(bd, ProductStatus::ResolveNotRun) {
163  assert(not bd->produced());
164  assert(not bd->onDemand());
165  }
166 
167  protected:
168  void putProduct(std::unique_ptr<WrapperBase> edp) const override;
169  void putOrMergeProduct(std::unique_ptr<WrapperBase> prod) const override;
170 
171  Resolution resolveProduct_(Principal const& principal,
172  bool skipCurrentProcess,
174  ModuleCallingContext const* mcc) const final;
175  void prefetchAsync_(WaitingTaskHolder waitTask,
176  Principal const& principal,
177  bool skipCurrentProcess,
178  ServiceToken const& token,
180  ModuleCallingContext const* mcc) const final;
181  bool unscheduledWasNotRun_() const final { return false; }
182 
183  private:
184  bool isFromCurrentProcess() const final;
185  };
186 
188  public:
189  ProducedProductResolver(std::shared_ptr<BranchDescription const> bd, ProductStatus iDefaultStatus)
190  : DataManagingProductResolver(bd, iDefaultStatus) {
191  assert(bd->produced());
192  }
193 
194  protected:
195  void putProduct(std::unique_ptr<WrapperBase> edp) const override;
196 
197  private:
198  bool isFromCurrentProcess() const final;
199  };
200 
202  public:
203  explicit PuttableProductResolver(std::shared_ptr<BranchDescription const> bd)
205 
206  void setupUnscheduled(UnscheduledConfigurator const&) final;
207 
208  private:
209  Resolution resolveProduct_(Principal const& principal,
210  bool skipCurrentProcess,
212  ModuleCallingContext const* mcc) const override;
213  void prefetchAsync_(WaitingTaskHolder waitTask,
214  Principal const& principal,
215  bool skipCurrentProcess,
216  ServiceToken const& token,
218  ModuleCallingContext const* mcc) const override;
219  bool unscheduledWasNotRun_() const override { return false; }
220 
221  // The WaitingTaskList below is the one from the worker, if one
222  // corresponds to this ProductResolver. For the Source-like cases
223  // where there is no such Worker, the tasks depending on the data
224  // depending on this ProductResolver are assumed to be eligible to
225  // run immediately after their prefetch.
226  WaitingTaskList* waitingTasks_ = nullptr;
227  };
228 
230  public:
231  explicit UnscheduledProductResolver(std::shared_ptr<BranchDescription const> bd)
232  : ProducedProductResolver(bd, ProductStatus::ResolveNotRun) {}
233 
234  void setupUnscheduled(UnscheduledConfigurator const&) final;
235 
236  private:
237  Resolution resolveProduct_(Principal const& principal,
238  bool skipCurrentProcess,
240  ModuleCallingContext const* mcc) const override;
241  void prefetchAsync_(WaitingTaskHolder waitTask,
242  Principal const& principal,
243  bool skipCurrentProcess,
244  ServiceToken const& token,
246  ModuleCallingContext const* mcc) const override;
247  bool unscheduledWasNotRun_() const override { return status() == ProductStatus::ResolveNotRun; }
248 
249  void resetProductData_(bool deleteEarly) override;
250 
252  UnscheduledAuxiliary const* aux_ = nullptr;
253  Worker* worker_ = nullptr;
254  mutable std::atomic<bool> prefetchRequested_ = false;
255  };
256 
258  public:
259  explicit TransformingProductResolver(std::shared_ptr<BranchDescription const> bd)
260  : ProducedProductResolver(bd, ProductStatus::ResolveFailed), mcc_(nullptr) {}
261 
262  void setupUnscheduled(UnscheduledConfigurator const&) final;
263 
264  private:
265  Resolution resolveProduct_(Principal const& principal,
266  bool skipCurrentProcess,
268  ModuleCallingContext const* mcc) const override;
269  void prefetchAsync_(WaitingTaskHolder waitTask,
270  Principal const& principal,
271  bool skipCurrentProcess,
272  ServiceToken const& token,
274  ModuleCallingContext const* mcc) const override;
275  bool unscheduledWasNotRun_() const override { return status() == ProductStatus::ResolveNotRun; }
276 
277  void resetProductData_(bool deleteEarly) override;
278 
280  UnscheduledAuxiliary const* aux_ = nullptr;
281  Worker* worker_ = nullptr;
282  CMS_THREAD_GUARD(prefetchRequested_) mutable ModuleCallingContext mcc_;
283  size_t index_;
284  mutable std::atomic<bool> prefetchRequested_ = false;
285  };
286 
288  public:
290  explicit AliasProductResolver(std::shared_ptr<BranchDescription const> bd,
292  : DataManagingOrAliasProductResolver(), realProduct_(realProduct), bd_(bd) {}
293 
294  void connectTo(ProductResolverBase const& iOther, Principal const* iParentPrincipal) final {
295  realProduct_.connectTo(iOther, iParentPrincipal);
296  };
297 
298  private:
300  bool skipCurrentProcess,
302  ModuleCallingContext const* mcc) const override {
303  return realProduct_.resolveProduct(principal, skipCurrentProcess, sra, mcc);
304  }
306  Principal const& principal,
307  bool skipCurrentProcess,
308  ServiceToken const& token,
310  ModuleCallingContext const* mcc) const override {
311  realProduct_.prefetchAsync(waitTask, principal, skipCurrentProcess, token, sra, mcc);
312  }
313  bool unscheduledWasNotRun_() const override { return realProduct_.unscheduledWasNotRun(); }
314  bool productUnavailable_() const override { return realProduct_.productUnavailable(); }
315  bool productResolved_() const final { return realProduct_.productResolved(); }
316  bool productWasDeleted_() const override { return realProduct_.productWasDeleted(); }
317  bool productWasFetchedAndIsValid_(bool iSkipCurrentProcess) const final {
318  return realProduct_.productWasFetchedAndIsValid(iSkipCurrentProcess);
319  }
320 
321  BranchDescription const& branchDescription_() const override { return *bd_; }
322  void resetBranchDescription_(std::shared_ptr<BranchDescription const> bd) override { bd_ = bd; }
323  Provenance const* provenance_() const final { return realProduct_.provenance(); }
324 
325  std::string const& resolvedModuleLabel_() const override { return realProduct_.moduleLabel(); }
326  void setProductProvenanceRetriever_(ProductProvenanceRetriever const* provRetriever) override;
327  void setProductID_(ProductID const& pid) override;
328  ProductProvenance const* productProvenancePtr_() const override;
329  void resetProductData_(bool deleteEarly) override;
330  ProductData const& getProductData() const final { return realProduct_.getProductData(); }
331  bool singleProduct_() const override;
332 
334  std::shared_ptr<BranchDescription const> bd_;
335  };
336 
337  // Switch is a mixture of DataManaging (for worker and provenance) and Alias (for product)
339  public:
341  SwitchBaseProductResolver(std::shared_ptr<BranchDescription const> bd,
343 
344  void connectTo(ProductResolverBase const& iOther, Principal const* iParentPrincipal) final;
345  void setupUnscheduled(UnscheduledConfigurator const& iConfigure) final;
346 
347  protected:
349  WaitingTaskList& waitingTasks() const { return waitingTasks_; }
350  Worker* worker() const { return worker_; }
351  DataManagingOrAliasProductResolver const& realProduct() const { return realProduct_; }
352  std::atomic<bool>& prefetchRequested() const { return prefetchRequested_; }
353  void unsafe_setWrapperAndProvenance() const;
354  void resetProductData_(bool deleteEarly) override;
355 
356  private:
357  bool productResolved_() const final;
358  bool productWasDeleted_() const final { return realProduct_.productWasDeleted(); }
359  bool productWasFetchedAndIsValid_(bool iSkipCurrentProcess) const final {
360  return realProduct_.productWasFetchedAndIsValid(iSkipCurrentProcess);
361  }
364  ;
365  }
366  void resetBranchDescription_(std::shared_ptr<BranchDescription const> bd) final {
368  }
369  Provenance const* provenance_() const final { return &productData_.provenance(); }
370  std::string const& resolvedModuleLabel_() const final { return moduleLabel(); }
371  void setProductProvenanceRetriever_(ProductProvenanceRetriever const* provRetriever) final;
372  void setProductID_(ProductID const& pid) final;
374  ProductData const& getProductData() const final { return productData_; }
375  bool singleProduct_() const final { return true; }
376 
377  // for "alias" view
379  // for "product" view
381  Worker* worker_ = nullptr;
383  mutable std::atomic<bool> prefetchRequested_;
384  // for provenance
386  };
387 
388  // For the case when SwitchProducer is on a Path
390  public:
391  SwitchProducerProductResolver(std::shared_ptr<BranchDescription const> bd,
393 
394  private:
395  Resolution resolveProduct_(Principal const& principal,
396  bool skipCurrentProcess,
398  ModuleCallingContext const* mcc) const final;
399  void prefetchAsync_(WaitingTaskHolder waitTask,
400  Principal const& principal,
401  bool skipCurrentProcess,
402  ServiceToken const& token,
404  ModuleCallingContext const* mcc) const final;
405  void putProduct(std::unique_ptr<WrapperBase> edp) const final;
406  bool unscheduledWasNotRun_() const final { return false; }
407  bool productUnavailable_() const final;
408  void resetProductData_(bool deleteEarly) final;
409 
410  constexpr static const ProductStatus defaultStatus_ = ProductStatus::NotPut;
411 
412  // for filter in a Path
413  // The variable is only modified or read at times where the
414  // framework has guaranteed synchronization between write and read
416  };
417 
418  // For the case when SwitchProducer is not on any Path
420  public:
421  SwitchAliasProductResolver(std::shared_ptr<BranchDescription const> bd,
423  : SwitchBaseProductResolver(std::move(bd), realProduct) {}
424 
425  private:
426  Resolution resolveProduct_(Principal const& principal,
427  bool skipCurrentProcess,
429  ModuleCallingContext const* mcc) const final;
430  void prefetchAsync_(WaitingTaskHolder waitTask,
431  Principal const& principal,
432  bool skipCurrentProcess,
433  ServiceToken const& token,
435  ModuleCallingContext const* mcc) const final;
436  bool unscheduledWasNotRun_() const final { return realProduct().unscheduledWasNotRun(); }
437  bool productUnavailable_() const final { return realProduct().productUnavailable(); }
438  };
439 
441  public:
443  explicit ParentProcessProductResolver(std::shared_ptr<BranchDescription const> bd)
444  : ProductResolverBase(), realProduct_(nullptr), bd_(bd), provRetriever_(nullptr), parentPrincipal_(nullptr) {}
445 
446  void connectTo(ProductResolverBase const& iOther, Principal const* iParentPrincipal) final {
447  realProduct_ = &iOther;
448  parentPrincipal_ = iParentPrincipal;
449  };
450 
451  private:
453  bool skipCurrentProcess,
455  ModuleCallingContext const* mcc) const override {
456  if (principal.branchType() == InProcess &&
459  return Resolution(nullptr);
460  }
461 
462  skipCurrentProcess = false;
463  return realProduct_->resolveProduct(*parentPrincipal_, skipCurrentProcess, sra, mcc);
464  }
466  Principal const& principal,
467  bool skipCurrentProcess,
468  ServiceToken const& token,
470  ModuleCallingContext const* mcc) const override {
471  if (principal.branchType() == InProcess &&
474  return;
475  }
476 
477  skipCurrentProcess = false;
478  realProduct_->prefetchAsync(waitTask, *parentPrincipal_, skipCurrentProcess, token, sra, mcc);
479  }
480  bool unscheduledWasNotRun_() const override {
481  if (realProduct_)
482  return realProduct_->unscheduledWasNotRun();
483  throwNullRealProduct();
484  return false;
485  }
486  bool productUnavailable_() const override { return realProduct_->productUnavailable(); }
487  bool productResolved_() const final { return realProduct_->productResolved(); }
488  bool productWasDeleted_() const override { return realProduct_->productWasDeleted(); }
489  bool productWasFetchedAndIsValid_(bool iSkipCurrentProcess) const override {
490  iSkipCurrentProcess = false;
491  return realProduct_->productWasFetchedAndIsValid(iSkipCurrentProcess);
492  }
493 
494  BranchDescription const& branchDescription_() const override { return *bd_; }
495  void resetBranchDescription_(std::shared_ptr<BranchDescription const> bd) override { bd_ = bd; }
496  Provenance const* provenance_() const final { return realProduct_->provenance(); }
497  std::string const& resolvedModuleLabel_() const override { return realProduct_->moduleLabel(); }
498  void setProductProvenanceRetriever_(ProductProvenanceRetriever const* provRetriever) override;
499  void setProductID_(ProductID const& pid) override;
500  ProductProvenance const* productProvenancePtr_() const override;
501  void resetProductData_(bool deleteEarly) override;
502  bool singleProduct_() const override;
503  void throwNullRealProduct() const;
504 
506  std::shared_ptr<BranchDescription const> bd_;
509  };
510 
512  public:
514  NoProcessProductResolver(std::vector<ProductResolverIndex> const& matchingHolders,
515  std::vector<bool> const& ambiguous,
516  bool madeAtEnd);
517 
518  void connectTo(ProductResolverBase const& iOther, Principal const*) final;
519 
520  void tryPrefetchResolverAsync(unsigned int iProcessingIndex,
521  Principal const& principal,
522  bool skipCurrentProcess,
524  ModuleCallingContext const* mcc,
526  oneapi::tbb::task_group*) const;
527 
528  bool dataValidFromResolver(unsigned int iProcessingIndex,
529  Principal const& principal,
530  bool iSkipCurrentProcess) const;
531 
532  void prefetchFailed(unsigned int iProcessingIndex,
533  Principal const& principal,
534  bool iSkipCurrentProcess,
535  std::exception_ptr iExceptPtr) const;
536 
537  private:
538  unsigned int unsetIndexValue() const;
539  Resolution resolveProduct_(Principal const& principal,
540  bool skipCurrentProcess,
542  ModuleCallingContext const* mcc) const override;
543  void prefetchAsync_(WaitingTaskHolder waitTask,
544  Principal const& principal,
545  bool skipCurrentProcess,
546  ServiceToken const& token,
548  ModuleCallingContext const* mcc) const override;
549  bool unscheduledWasNotRun_() const override;
550  bool productUnavailable_() const override;
551  bool productWasDeleted_() const override;
552  bool productResolved_() const final;
553  bool productWasFetchedAndIsValid_(bool iSkipCurrentProcess) const override;
554 
556  void resetBranchDescription_(std::shared_ptr<BranchDescription const> bd) override;
557  Provenance const* provenance_() const override;
558 
559  std::string const& resolvedModuleLabel_() const override { return moduleLabel(); }
560  void setProductProvenanceRetriever_(ProductProvenanceRetriever const* provRetriever) override;
561  void setProductID_(ProductID const& pid) override;
562  ProductProvenance const* productProvenancePtr_() const override;
563  void resetProductData_(bool deleteEarly) override;
564  bool singleProduct_() const override;
565 
566  Resolution tryResolver(unsigned int index,
567  Principal const& principal,
568  bool skipCurrentProcess,
570  ModuleCallingContext const* mcc) const;
571 
572  void setCache(bool skipCurrentProcess, ProductResolverIndex index, std::exception_ptr exceptionPtr) const;
573 
574  std::vector<ProductResolverIndex> matchingHolders_;
575  std::vector<bool> ambiguous_;
578  mutable std::atomic<unsigned int> lastCheckIndex_;
579  mutable std::atomic<unsigned int> lastSkipCurrentCheckIndex_;
580  mutable std::atomic<bool> prefetchRequested_;
581  mutable std::atomic<bool> skippingPrefetchRequested_;
582  const bool madeAtEnd_;
583  };
584 
586  public:
589  : ProductResolverBase(), realResolverIndex_(iChoice) {}
590 
591  void connectTo(ProductResolverBase const& iOther, Principal const*) final;
592 
593  private:
594  Resolution resolveProduct_(Principal const& principal,
595  bool skipCurrentProcess,
597  ModuleCallingContext const* mcc) const override;
598  void prefetchAsync_(WaitingTaskHolder waitTask,
599  Principal const& principal,
600  bool skipCurrentProcess,
601  ServiceToken const& token,
603  ModuleCallingContext const* mcc) const override;
604  bool unscheduledWasNotRun_() const override;
605  bool productUnavailable_() const override;
606  bool productWasDeleted_() const override;
607  bool productResolved_() const final;
608  bool productWasFetchedAndIsValid_(bool iSkipCurrentProcess) const override;
609 
611  void resetBranchDescription_(std::shared_ptr<BranchDescription const> bd) override;
612  Provenance const* provenance_() const override;
613 
614  std::string const& resolvedModuleLabel_() const override { return moduleLabel(); }
615  void setProductProvenanceRetriever_(ProductProvenanceRetriever const* provRetriever) override;
616  void setProductID_(ProductID const& pid) override;
617  ProductProvenance const* productProvenancePtr_() const override;
618  void resetProductData_(bool deleteEarly) override;
619  bool singleProduct_() const override;
620 
622  };
623 
624 } // namespace edm
625 
626 #endif
ProductData const & getProductData() const final
virtual void retrieveAndMerge_(Principal const &principal, MergeableRunProductMetadata const *mergeableRunProductMetadata) const
std::string const & resolvedModuleLabel_() const final
bool unscheduledWasNotRun_() const override
void setProductProvenanceRetriever_(ProductProvenanceRetriever const *provRetriever) final
PutOnReadInputProductResolver(std::shared_ptr< BranchDescription const > bd)
bool unscheduledWasNotRun_() const override
void connectTo(ProductResolverBase const &iOther, Principal const *iParentPrincipal) final
bool unscheduledWasNotRun_() const override
unsigned int ProductResolverIndex
ProductProvenance const * productProvenance() const
Definition: Provenance.cc:24
virtual Resolution resolveProduct_(Principal const &principal, bool skipCurrentProcess, SharedResourcesAcquirer *sra, ModuleCallingContext const *mcc) const =0
ProducedProductResolver::ProductStatus ProductStatus
std::shared_ptr< BranchDescription const > bd_
Provenance const & provenance() const
Definition: ProductData.h:33
void resetBranchDescription_(std::shared_ptr< BranchDescription const > bd) final
void resetProductData_(bool deleteEarly) override
SwitchAliasProductResolver(std::shared_ptr< BranchDescription const > bd, DataManagingOrAliasProductResolver &realProduct)
GlobalContext const * globalContext() const
bool productUnavailable_() const final
virtual bool unscheduledWasNotRun_() const =0
void setProductID_(ProductID const &pid) final
ParentProcessProductResolver(std::shared_ptr< BranchDescription const > bd)
void checkType(WrapperBase const &prod) const
BranchDescription const & branchDescription_() const final
std::atomic< bool > prefetchRequested_
virtual void setupUnscheduled(UnscheduledConfigurator const &)
WaitingTaskList & waitingTasks() const
bool productResolved_() const final
AliasProductResolver(std::shared_ptr< BranchDescription const > bd, DataManagingOrAliasProductResolver &realProduct)
Provenance const * provenance() const
virtual ProductData const & getProductData() const =0
DelayedReaderInputProductResolver(std::shared_ptr< BranchDescription const > bd)
TransformingProductResolver(std::shared_ptr< BranchDescription const > bd)
bool productWasFetchedAndIsValid_(bool iSkipCurrentProcess) const override
MergeableInputProductResolver(std::shared_ptr< BranchDescription const > bd, ProductStatus iDefaultStatus)
ProductProvenanceRetriever const * provRetriever_
Resolution resolveProduct_(Principal const &principal, bool skipCurrentProcess, SharedResourcesAcquirer *sra, ModuleCallingContext const *mcc) const override
assert(be >=bs)
ProductData const & getProductData() const final
void connectTo(ProductResolverBase const &, Principal const *) final
DataManagingOrAliasProductResolver & realProduct_
UnscheduledAuxiliary const * aux_
virtual void prefetchAsync_(WaitingTaskHolder waitTask, Principal const &principal, bool skipCurrentProcess, ServiceToken const &token, SharedResourcesAcquirer *sra, ModuleCallingContext const *mcc) const =0
deep_tau::DeepTauBase::BasicDiscriminator bd
Definition: DeepTauId.cc:808
ProducedProductResolver::ProductStatus ProductStatus
bool productWasFetchedAndIsValid_(bool iSkipCurrentProcess) const final
virtual bool isFromCurrentProcess() const =0
ProductResolverBase const * realProduct_
void resetBranchDescription_(std::shared_ptr< BranchDescription const > bd) final
std::string const & moduleLabel() const
void connectTo(ProductResolverBase const &iOther, Principal const *iParentPrincipal) final
ProductProvenance const * productProvenancePtr_() const final
std::atomic< unsigned int > lastSkipCurrentCheckIndex_
Provenance const * provenance_() const final
void resetBranchDescription_(std::shared_ptr< BranchDescription const > bd) override
bool productWasFetchedAndIsValid_(bool iSkipCurrentProcess) const final
DataManagingOrAliasProductResolver const & realProduct() const
std::string const & resolvedModuleLabel_() const final
bool productWasFetchedAndIsValid_(bool iSkipCurrentProcess) const final
#define CMS_THREAD_GUARD(_var_)
DataManagingProductResolver(std::shared_ptr< BranchDescription const > bd, ProductStatus iDefaultStatus)
bool unscheduledWasNotRun_() const override
#define CMS_THREAD_SAFE
std::atomic< bool > prefetchRequested_
std::atomic< unsigned int > lastCheckIndex_
BranchDescription const & branchDescription_() const override
UnscheduledProductResolver(std::shared_ptr< BranchDescription const > bd)
void resetBranchDescription_(std::shared_ptr< BranchDescription const > bd) override
bool productWasDeleted_() const override
ProducedProductResolver::ProductStatus ProductStatus
ProductProvenance const * productProvenancePtr_() const final
BranchDescription const & branchDescription_() const override
std::atomic< bool > skippingPrefetchRequested_
std::atomic< ProductStatus > theStatus_
std::vector< bool > ambiguous_
virtual void setMergeableRunProductMetadata_(MergeableRunProductMetadata const *)
ProducedProductResolver(std::shared_ptr< BranchDescription const > bd, ProductStatus iDefaultStatus)
void setMergeableRunProductMetadataInProductData(MergeableRunProductMetadata const *)
ProductStatus defaultStatus() const
void prefetchAsync_(WaitingTaskHolder waitTask, Principal const &principal, bool skipCurrentProcess, ServiceToken const &token, SharedResourcesAcquirer *sra, ModuleCallingContext const *mcc) const override
DataManagingOrAliasProductResolver & realProduct_
BranchDescription const & branchDescription_() const final
PuttableProductResolver(std::shared_ptr< BranchDescription const > bd)
Transition transition() const
Definition: GlobalContext.h:55
std::vector< ProductResolverIndex > matchingHolders_
Resolution resolveProduct_(Principal const &principal, bool skipCurrentProcess, SharedResourcesAcquirer *sra, ModuleCallingContext const *mcc) const override
bool productUnavailable_() const override
std::string const & resolvedModuleLabel_() const override
ProductData const & getProductData() const final
HLT enums.
bool productWasDeleted_() const override
std::string const & resolvedModuleLabel_() const override
void setProduct(std::unique_ptr< WrapperBase > edp) const
Provenance const * provenance_() const final
bool productUnavailable_() const override
ProducedProductResolver::ProductStatus ProductStatus
Resolution resolveProductImpl(FUNC resolver) const
void resetProductData_(bool deleteEarly) override=0
std::shared_ptr< BranchDescription const > bd_
bool unscheduledWasNotRun_() const final
bool unscheduledWasNotRun_() const override
std::atomic< bool > & prefetchRequested() const
SingleChoiceNoProcessProductResolver(ProductResolverIndex iChoice)
void resetBranchDescription(std::shared_ptr< BranchDescription const > bd)
Definition: ProductData.cc:20
def move(src, dest)
Definition: eostools.py:511
void prefetchAsync_(WaitingTaskHolder waitTask, Principal const &principal, bool skipCurrentProcess, ServiceToken const &token, SharedResourcesAcquirer *sra, ModuleCallingContext const *mcc) const override
Provenance const * provenance_() const final
BranchType const & branchType() const
Definition: Principal.h:181
ParentContext const & parent() const
Provenance const * provenance_() const final
std::shared_ptr< BranchDescription const > const & branchDescription() const
Definition: ProductData.h:29