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)
56  productData_(bd),
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)
204  : ProducedProductResolver(bd, ProductStatus::NotPut) {}
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::ResolveNotRun), mcc_(nullptr) {}
261 
262  void setupUnscheduled(UnscheduledConfigurator const&) final;
263 
264  private:
265  void putProduct(std::unique_ptr<WrapperBase> edp) const override;
266  Resolution resolveProduct_(Principal const& principal,
267  bool skipCurrentProcess,
269  ModuleCallingContext const* mcc) const override;
270  void prefetchAsync_(WaitingTaskHolder waitTask,
271  Principal const& principal,
272  bool skipCurrentProcess,
273  ServiceToken const& token,
275  ModuleCallingContext const* mcc) const override;
276  bool unscheduledWasNotRun_() const override { return status() == ProductStatus::ResolveNotRun; }
277 
278  void resetProductData_(bool deleteEarly) override;
279 
281  UnscheduledAuxiliary const* aux_ = nullptr;
282  Worker* worker_ = nullptr;
283  CMS_THREAD_GUARD(prefetchRequested_) mutable ModuleCallingContext mcc_;
284  size_t index_;
285  mutable std::atomic<bool> prefetchRequested_ = false;
286  };
287 
289  public:
291  explicit AliasProductResolver(std::shared_ptr<BranchDescription const> bd,
293  : DataManagingOrAliasProductResolver(), realProduct_(realProduct), bd_(bd) {}
294 
295  void connectTo(ProductResolverBase const& iOther, Principal const* iParentPrincipal) final {
296  realProduct_.connectTo(iOther, iParentPrincipal);
297  };
298 
299  private:
301  bool skipCurrentProcess,
303  ModuleCallingContext const* mcc) const override {
304  return realProduct_.resolveProduct(principal, skipCurrentProcess, sra, mcc);
305  }
307  Principal const& principal,
308  bool skipCurrentProcess,
309  ServiceToken const& token,
311  ModuleCallingContext const* mcc) const override {
312  realProduct_.prefetchAsync(waitTask, principal, skipCurrentProcess, token, sra, mcc);
313  }
314  bool unscheduledWasNotRun_() const override { return realProduct_.unscheduledWasNotRun(); }
315  bool productUnavailable_() const override { return realProduct_.productUnavailable(); }
316  bool productResolved_() const final { return realProduct_.productResolved(); }
317  bool productWasDeleted_() const override { return realProduct_.productWasDeleted(); }
318  bool productWasFetchedAndIsValid_(bool iSkipCurrentProcess) const final {
319  return realProduct_.productWasFetchedAndIsValid(iSkipCurrentProcess);
320  }
321 
322  BranchDescription const& branchDescription_() const override { return *bd_; }
323  void resetBranchDescription_(std::shared_ptr<BranchDescription const> bd) override { bd_ = bd; }
324  Provenance const* provenance_() const final { return realProduct_.provenance(); }
325 
326  std::string const& resolvedModuleLabel_() const override { return realProduct_.moduleLabel(); }
327  void setProductProvenanceRetriever_(ProductProvenanceRetriever const* provRetriever) override;
328  void setProductID_(ProductID const& pid) override;
329  ProductProvenance const* productProvenancePtr_() const override;
330  void resetProductData_(bool deleteEarly) override;
331  ProductData const& getProductData() const final { return realProduct_.getProductData(); }
332  bool singleProduct_() const override;
333 
335  std::shared_ptr<BranchDescription const> bd_;
336  };
337 
338  // Switch is a mixture of DataManaging (for worker and provenance) and Alias (for product)
340  public:
342  SwitchBaseProductResolver(std::shared_ptr<BranchDescription const> bd,
344 
345  void connectTo(ProductResolverBase const& iOther, Principal const* iParentPrincipal) final;
346  void setupUnscheduled(UnscheduledConfigurator const& iConfigure) final;
347 
348  protected:
350  WaitingTaskList& waitingTasks() const { return waitingTasks_; }
351  Worker* worker() const { return worker_; }
352  DataManagingOrAliasProductResolver const& realProduct() const { return realProduct_; }
353  std::atomic<bool>& prefetchRequested() const { return prefetchRequested_; }
354  void unsafe_setWrapperAndProvenance() const;
355  void resetProductData_(bool deleteEarly) override;
356 
357  private:
358  bool productResolved_() const final;
359  bool productWasDeleted_() const final { return realProduct_.productWasDeleted(); }
360  bool productWasFetchedAndIsValid_(bool iSkipCurrentProcess) const final {
361  return realProduct_.productWasFetchedAndIsValid(iSkipCurrentProcess);
362  }
365  ;
366  }
367  void resetBranchDescription_(std::shared_ptr<BranchDescription const> bd) final {
369  }
370  Provenance const* provenance_() const final { return &productData_.provenance(); }
371  std::string const& resolvedModuleLabel_() const final { return moduleLabel(); }
372  void setProductProvenanceRetriever_(ProductProvenanceRetriever const* provRetriever) final;
373  void setProductID_(ProductID const& pid) final;
375  ProductData const& getProductData() const final { return productData_; }
376  bool singleProduct_() const final { return true; }
377 
378  // for "alias" view
380  // for "product" view
382  Worker* worker_ = nullptr;
384  mutable std::atomic<bool> prefetchRequested_;
385  // for provenance
387  };
388 
389  // For the case when SwitchProducer is on a Path
391  public:
392  SwitchProducerProductResolver(std::shared_ptr<BranchDescription const> bd,
394 
395  private:
396  Resolution resolveProduct_(Principal const& principal,
397  bool skipCurrentProcess,
399  ModuleCallingContext const* mcc) const final;
400  void prefetchAsync_(WaitingTaskHolder waitTask,
401  Principal const& principal,
402  bool skipCurrentProcess,
403  ServiceToken const& token,
405  ModuleCallingContext const* mcc) const final;
406  void putProduct(std::unique_ptr<WrapperBase> edp) const final;
407  bool unscheduledWasNotRun_() const final { return false; }
408  bool productUnavailable_() const final;
409  void resetProductData_(bool deleteEarly) final;
410 
411  constexpr static const ProductStatus defaultStatus_ = ProductStatus::NotPut;
412 
413  // for filter in a Path
414  // The variable is only modified or read at times where the
415  // framework has guaranteed synchronization between write and read
417  };
418 
419  // For the case when SwitchProducer is not on any Path
421  public:
422  SwitchAliasProductResolver(std::shared_ptr<BranchDescription const> bd,
424  : SwitchBaseProductResolver(std::move(bd), realProduct) {}
425 
426  private:
427  Resolution resolveProduct_(Principal const& principal,
428  bool skipCurrentProcess,
430  ModuleCallingContext const* mcc) const final;
431  void prefetchAsync_(WaitingTaskHolder waitTask,
432  Principal const& principal,
433  bool skipCurrentProcess,
434  ServiceToken const& token,
436  ModuleCallingContext const* mcc) const final;
437  bool unscheduledWasNotRun_() const final { return realProduct().unscheduledWasNotRun(); }
438  bool productUnavailable_() const final { return realProduct().productUnavailable(); }
439  };
440 
442  public:
444  explicit ParentProcessProductResolver(std::shared_ptr<BranchDescription const> bd)
445  : ProductResolverBase(), realProduct_(nullptr), bd_(bd), provRetriever_(nullptr), parentPrincipal_(nullptr) {}
446 
447  void connectTo(ProductResolverBase const& iOther, Principal const* iParentPrincipal) final {
448  realProduct_ = &iOther;
449  parentPrincipal_ = iParentPrincipal;
450  };
451 
452  private:
454  bool skipCurrentProcess,
456  ModuleCallingContext const* mcc) const override {
457  if (principal.branchType() == InProcess &&
460  return Resolution(nullptr);
461  }
462 
463  skipCurrentProcess = false;
464  return realProduct_->resolveProduct(*parentPrincipal_, skipCurrentProcess, sra, mcc);
465  }
467  Principal const& principal,
468  bool skipCurrentProcess,
469  ServiceToken const& token,
471  ModuleCallingContext const* mcc) const override {
472  if (principal.branchType() == InProcess &&
475  return;
476  }
477 
478  skipCurrentProcess = false;
479  realProduct_->prefetchAsync(waitTask, *parentPrincipal_, skipCurrentProcess, token, sra, mcc);
480  }
481  bool unscheduledWasNotRun_() const override {
482  if (realProduct_)
483  return realProduct_->unscheduledWasNotRun();
484  throwNullRealProduct();
485  return false;
486  }
487  bool productUnavailable_() const override { return realProduct_->productUnavailable(); }
488  bool productResolved_() const final { return realProduct_->productResolved(); }
489  bool productWasDeleted_() const override { return realProduct_->productWasDeleted(); }
490  bool productWasFetchedAndIsValid_(bool iSkipCurrentProcess) const override {
491  iSkipCurrentProcess = false;
492  return realProduct_->productWasFetchedAndIsValid(iSkipCurrentProcess);
493  }
494 
495  BranchDescription const& branchDescription_() const override { return *bd_; }
496  void resetBranchDescription_(std::shared_ptr<BranchDescription const> bd) override { bd_ = bd; }
497  Provenance const* provenance_() const final { return realProduct_->provenance(); }
498  std::string const& resolvedModuleLabel_() const override { return realProduct_->moduleLabel(); }
499  void setProductProvenanceRetriever_(ProductProvenanceRetriever const* provRetriever) override;
500  void setProductID_(ProductID const& pid) override;
501  ProductProvenance const* productProvenancePtr_() const override;
502  void resetProductData_(bool deleteEarly) override;
503  bool singleProduct_() const override;
504  void throwNullRealProduct() const;
505 
507  std::shared_ptr<BranchDescription const> bd_;
510  };
511 
513  public:
515  NoProcessProductResolver(std::vector<ProductResolverIndex> const& matchingHolders,
516  std::vector<bool> const& ambiguous,
517  bool madeAtEnd);
518 
519  void connectTo(ProductResolverBase const& iOther, Principal const*) final;
520 
521  void tryPrefetchResolverAsync(unsigned int iProcessingIndex,
522  Principal const& principal,
523  bool skipCurrentProcess,
525  ModuleCallingContext const* mcc,
527  oneapi::tbb::task_group*) const;
528 
529  bool dataValidFromResolver(unsigned int iProcessingIndex,
530  Principal const& principal,
531  bool iSkipCurrentProcess) const;
532 
533  void prefetchFailed(unsigned int iProcessingIndex,
534  Principal const& principal,
535  bool iSkipCurrentProcess,
536  std::exception_ptr iExceptPtr) const;
537 
538  private:
539  unsigned int unsetIndexValue() const;
540  Resolution resolveProduct_(Principal const& principal,
541  bool skipCurrentProcess,
543  ModuleCallingContext const* mcc) const override;
544  void prefetchAsync_(WaitingTaskHolder waitTask,
545  Principal const& principal,
546  bool skipCurrentProcess,
547  ServiceToken const& token,
549  ModuleCallingContext const* mcc) const override;
550  bool unscheduledWasNotRun_() const override;
551  bool productUnavailable_() const override;
552  bool productWasDeleted_() const override;
553  bool productResolved_() const final;
554  bool productWasFetchedAndIsValid_(bool iSkipCurrentProcess) const override;
555 
557  void resetBranchDescription_(std::shared_ptr<BranchDescription const> bd) override;
558  Provenance const* provenance_() const override;
559 
560  std::string const& resolvedModuleLabel_() const override { return moduleLabel(); }
561  void setProductProvenanceRetriever_(ProductProvenanceRetriever const* provRetriever) override;
562  void setProductID_(ProductID const& pid) override;
563  ProductProvenance const* productProvenancePtr_() const override;
564  void resetProductData_(bool deleteEarly) override;
565  bool singleProduct_() const override;
566 
567  Resolution tryResolver(unsigned int index,
568  Principal const& principal,
569  bool skipCurrentProcess,
571  ModuleCallingContext const* mcc) const;
572 
573  void setCache(bool skipCurrentProcess, ProductResolverIndex index, std::exception_ptr exceptionPtr) const;
574 
575  std::vector<ProductResolverIndex> matchingHolders_;
576  std::vector<bool> ambiguous_;
579  mutable std::atomic<unsigned int> lastCheckIndex_;
580  mutable std::atomic<unsigned int> lastSkipCurrentCheckIndex_;
581  mutable std::atomic<bool> prefetchRequested_;
582  mutable std::atomic<bool> skippingPrefetchRequested_;
583  const bool madeAtEnd_;
584  };
585 
587  public:
590  : ProductResolverBase(), realResolverIndex_(iChoice) {}
591 
592  void connectTo(ProductResolverBase const& iOther, Principal const*) final;
593 
594  private:
595  Resolution resolveProduct_(Principal const& principal,
596  bool skipCurrentProcess,
598  ModuleCallingContext const* mcc) const override;
599  void prefetchAsync_(WaitingTaskHolder waitTask,
600  Principal const& principal,
601  bool skipCurrentProcess,
602  ServiceToken const& token,
604  ModuleCallingContext const* mcc) const override;
605  bool unscheduledWasNotRun_() const override;
606  bool productUnavailable_() const override;
607  bool productWasDeleted_() const override;
608  bool productResolved_() const final;
609  bool productWasFetchedAndIsValid_(bool iSkipCurrentProcess) const override;
610 
612  void resetBranchDescription_(std::shared_ptr<BranchDescription const> bd) override;
613  Provenance const* provenance_() const override;
614 
615  std::string const& resolvedModuleLabel_() const override { return moduleLabel(); }
616  void setProductProvenanceRetriever_(ProductProvenanceRetriever const* provRetriever) override;
617  void setProductID_(ProductID const& pid) override;
618  ProductProvenance const* productProvenancePtr_() const override;
619  void resetProductData_(bool deleteEarly) override;
620  bool singleProduct_() const override;
621 
623  };
624 
625 } // namespace edm
626 
627 #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
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:175
ParentContext const & parent() const
Provenance const * provenance_() const final
std::shared_ptr< BranchDescription const > const & branchDescription() const
Definition: ProductData.h:29