CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
ESSourceDataProxyBase.h
Go to the documentation of this file.
1 #ifndef FWCore_Framework_ESSourceDataProxyBase_h
2 #define FWCore_Framework_ESSourceDataProxyBase_h
3 // -*- C++ -*-
4 //
5 // Package: FWCore/Framework
6 // Class : ESSourceDataProxyBase
7 //
21 //
22 // Original Author: Chris Jones
23 // Created: 14/05/2020
24 //
25 
26 // system include files
27 #include <mutex>
28 #include <atomic>
29 
30 // user include files
35 
36 // forward declarations
37 
38 namespace edm::eventsetup {
40  public:
42  : m_queue(iQueue), m_mutex(iMutex), m_prefetching{false} {}
43 
44  edm::SerialTaskQueue* queue() const { return m_queue; }
45  std::mutex* mutex() const { return m_mutex; }
46 
47  protected:
48  void invalidateCache() override {
50  m_prefetching = false;
51  }
52  void invalidateTransientCache() override {}
53 
54  virtual void prefetch(edm::eventsetup::DataKey const& iKey, EventSetupRecordDetails) = 0;
55 
56  private:
59  edm::eventsetup::DataKey const& iKey,
60  edm::EventSetupImpl const*,
61  edm::ServiceToken const&,
62  edm::ESParentContext const&) final;
63 
64  // ---------- member data --------------------------------
65 
68  std::mutex* m_mutex;
69  std::atomic<bool> m_prefetching;
70  };
71 } // namespace edm::eventsetup
72 #endif
static std::mutex mutex
Definition: Proxy.cc:8
ESSourceDataProxyBase(edm::SerialTaskQueue *iQueue, std::mutex *iMutex)
void reset()
Resets access to the resource so that added tasks will wait.
void prefetchAsyncImpl(edm::WaitingTaskHolder iTask, edm::eventsetup::EventSetupRecordImpl const &, edm::eventsetup::DataKey const &iKey, edm::EventSetupImpl const *, edm::ServiceToken const &, edm::ESParentContext const &) final
virtual void prefetch(edm::eventsetup::DataKey const &iKey, EventSetupRecordDetails)=0
edm::SerialTaskQueue * queue() const