CMS 3D CMS Logo

List of all members | Public Member Functions | Private Member Functions | Private Attributes
edm::eventsetup::Callback< T, TFunc, TReturn, TRecord, TDecorator > Class Template Reference

#include <Callback.h>

Public Member Functions

 Callback (T *iProd, TFunc iFunc, unsigned int iID, const TDecorator &iDec=TDecorator())
 
 Callback (T *iProd, std::shared_ptr< TFunc > iFunc, unsigned int iID, const TDecorator &iDec=TDecorator())
 
 Callback (const Callback &)=delete
 
Callbackclone ()
 
ESProxyIndex const * getTokenIndices () const
 
template<class DataT >
void holdOntoPointer (DataT *iData)
 
void newRecordComing ()
 
const Callbackoperator= (const Callback &)=delete
 
void prefetchAsync (WaitingTaskHolder iTask, EventSetupRecordImpl const *iRecord, EventSetupImpl const *iEventSetupImpl, ServiceToken const &token, ESParentContext const &iParent)
 
template<class RemainingContainerT , class DataT , class ProductsT >
void setData (ProductsT &iProducts)
 
void storeReturnedValues (TReturn iReturn)
 
unsigned int transitionID () const
 

Private Member Functions

bool handleMayGet (EventSetupRecordImpl const *iRecord, EventSetupImpl const *iEventSetupImpl)
 
void prefetchNeededDataAsync (WaitingTaskHolder task, EventSetupImpl const *iImpl, ESProxyIndex const *proxies, edm::ServiceToken const &token) const
 
void runProducerAsync (oneapi::tbb::task_group *iGroup, std::exception_ptr const *iExcept, EventSetupRecordImpl const *iRecord, EventSetupImpl const *iEventSetupImpl, ServiceToken const &token)
 

Private Attributes

ESModuleCallingContext callingContext_
 
TDecorator decorator_
 
std::shared_ptr< TFunc > function_
 
const unsigned int id_
 
std::optional< std::vector< ESProxyIndex > > postMayGetProxies_
 
edm::propagate_const< T * > producer_
 
std::array< void *, produce::size< TReturn >::value > proxyData_
 
edm::WaitingTaskList taskList_
 
std::atomic< bool > wasCalledForThisRecord_
 

Detailed Description

template<typename T, typename TFunc, typename TReturn, typename TRecord, typename TDecorator = CallbackSimpleDecorator<TRecord>>
class edm::eventsetup::Callback< T, TFunc, TReturn, TRecord, TDecorator >

Description: Functional object used as the 'callback' for the CallbackProxy

Usage: <usage>

Definition at line 58 of file Callback.h.

Constructor & Destructor Documentation

◆ Callback() [1/3]

template<typename T , typename TFunc , typename TReturn , typename TRecord , typename TDecorator = CallbackSimpleDecorator<TRecord>>
edm::eventsetup::Callback< T, TFunc, TReturn, TRecord, TDecorator >::Callback ( T iProd,
TFunc  iFunc,
unsigned int  iID,
const TDecorator &  iDec = TDecorator() 
)
inline

Definition at line 60 of file Callback.h.

Referenced by edm::eventsetup::Callback< T, TFunc, TReturn, TRecord, TDecorator >::clone().

61  : Callback(iProd, std::make_shared<TFunc>(std::move(iFunc)), iID, iDec) {}
Callback(T *iProd, TFunc iFunc, unsigned int iID, const TDecorator &iDec=TDecorator())
Definition: Callback.h:60
def move(src, dest)
Definition: eostools.py:511

◆ Callback() [2/3]

template<typename T , typename TFunc , typename TReturn , typename TRecord , typename TDecorator = CallbackSimpleDecorator<TRecord>>
edm::eventsetup::Callback< T, TFunc, TReturn, TRecord, TDecorator >::Callback ( T iProd,
std::shared_ptr< TFunc >  iFunc,
unsigned int  iID,
const TDecorator &  iDec = TDecorator() 
)
inline

Definition at line 63 of file Callback.h.

64  : proxyData_{},
65  producer_(iProd),
66  callingContext_(&iProd->description()),
67  function_(std::move(iFunc)),
68  id_(iID),
70  decorator_(iDec) {}
std::shared_ptr< TFunc > function_
Definition: Callback.h:230
std::atomic< bool > wasCalledForThisRecord_
Definition: Callback.h:233
ESModuleCallingContext callingContext_
Definition: Callback.h:226
edm::propagate_const< T * > producer_
Definition: Callback.h:225
std::array< void *, produce::size< TReturn >::value > proxyData_
Definition: Callback.h:223
const unsigned int id_
Definition: Callback.h:232
def move(src, dest)
Definition: eostools.py:511

◆ Callback() [3/3]

template<typename T , typename TFunc , typename TReturn , typename TRecord , typename TDecorator = CallbackSimpleDecorator<TRecord>>
edm::eventsetup::Callback< T, TFunc, TReturn, TRecord, TDecorator >::Callback ( const Callback< T, TFunc, TReturn, TRecord, TDecorator > &  )
delete

Member Function Documentation

◆ clone()

template<typename T , typename TFunc , typename TReturn , typename TRecord , typename TDecorator = CallbackSimpleDecorator<TRecord>>
Callback* edm::eventsetup::Callback< T, TFunc, TReturn, TRecord, TDecorator >::clone ( void  )
inline

◆ getTokenIndices()

template<typename T , typename TFunc , typename TReturn , typename TRecord , typename TDecorator = CallbackSimpleDecorator<TRecord>>
ESProxyIndex const* edm::eventsetup::Callback< T, TFunc, TReturn, TRecord, TDecorator >::getTokenIndices ( ) const
inline

◆ handleMayGet()

template<typename T , typename TFunc , typename TReturn , typename TRecord , typename TDecorator = CallbackSimpleDecorator<TRecord>>
bool edm::eventsetup::Callback< T, TFunc, TReturn, TRecord, TDecorator >::handleMayGet ( EventSetupRecordImpl const *  iRecord,
EventSetupImpl const *  iEventSetupImpl 
)
inlineprivate

Definition at line 168 of file Callback.h.

References edm::eventsetup::Callback< T, TFunc, TReturn, TRecord, TDecorator >::callingContext_, edm::eventsetup::Callback< T, TFunc, TReturn, TRecord, TDecorator >::getTokenIndices(), edm::eventsetup::Callback< T, TFunc, TReturn, TRecord, TDecorator >::id_, edm::eventsetup::Callback< T, TFunc, TReturn, TRecord, TDecorator >::postMayGetProxies_, edm::eventsetup::Callback< T, TFunc, TReturn, TRecord, TDecorator >::producer_, and edm::eventsetup::Callback< T, TFunc, TReturn, TRecord, TDecorator >::transitionID().

Referenced by edm::eventsetup::Callback< T, TFunc, TReturn, TRecord, TDecorator >::prefetchAsync().

168  {
169  //Handle mayGets
170  TRecord rec;
172  rec.setImpl(iRecord, transitionID(), getTokenIndices(), iEventSetupImpl, &pc);
173  postMayGetProxies_ = producer_->updateFromMayConsumes(id_, rec);
174  return static_cast<bool>(postMayGetProxies_);
175  }
std::optional< std::vector< ESProxyIndex > > postMayGetProxies_
Definition: Callback.h:224
ESModuleCallingContext callingContext_
Definition: Callback.h:226
unsigned int transitionID() const
Definition: Callback.h:150
edm::propagate_const< T * > producer_
Definition: Callback.h:225
const unsigned int id_
Definition: Callback.h:232
ESProxyIndex const * getTokenIndices() const
Definition: Callback.h:151

◆ holdOntoPointer()

template<typename T , typename TFunc , typename TReturn , typename TRecord , typename TDecorator = CallbackSimpleDecorator<TRecord>>
template<class DataT >
void edm::eventsetup::Callback< T, TFunc, TReturn, TRecord, TDecorator >::holdOntoPointer ( DataT *  iData)
inline

Definition at line 126 of file Callback.h.

References edm::eventsetup::Callback< T, TFunc, TReturn, TRecord, TDecorator >::proxyData_.

126  {
128  }
std::array< void *, produce::size< TReturn >::value > proxyData_
Definition: Callback.h:223

◆ newRecordComing()

template<typename T , typename TFunc , typename TReturn , typename TRecord , typename TDecorator = CallbackSimpleDecorator<TRecord>>
void edm::eventsetup::Callback< T, TFunc, TReturn, TRecord, TDecorator >::newRecordComing ( )
inline

Definition at line 145 of file Callback.h.

References edm::WaitingTaskList::reset(), edm::eventsetup::Callback< T, TFunc, TReturn, TRecord, TDecorator >::taskList_, and edm::eventsetup::Callback< T, TFunc, TReturn, TRecord, TDecorator >::wasCalledForThisRecord_.

145  {
146  wasCalledForThisRecord_ = false;
147  taskList_.reset();
148  }
void reset()
Resets access to the resource so that added tasks will wait.
std::atomic< bool > wasCalledForThisRecord_
Definition: Callback.h:233
edm::WaitingTaskList taskList_
Definition: Callback.h:227

◆ operator=()

template<typename T , typename TFunc , typename TReturn , typename TRecord , typename TDecorator = CallbackSimpleDecorator<TRecord>>
const Callback& edm::eventsetup::Callback< T, TFunc, TReturn, TRecord, TDecorator >::operator= ( const Callback< T, TFunc, TReturn, TRecord, TDecorator > &  )
delete

◆ prefetchAsync()

template<typename T , typename TFunc , typename TReturn , typename TRecord , typename TDecorator = CallbackSimpleDecorator<TRecord>>
void edm::eventsetup::Callback< T, TFunc, TReturn, TRecord, TDecorator >::prefetchAsync ( WaitingTaskHolder  iTask,
EventSetupRecordImpl const *  iRecord,
EventSetupImpl const *  iEventSetupImpl,
ServiceToken const &  token,
ESParentContext const &  iParent 
)
inline

Definition at line 77 of file Callback.h.

References edm::eventsetup::EventSetupRecordImpl::activityRegistry(), edm::WaitingTaskList::add(), edm::eventsetup::Callback< T, TFunc, TReturn, TRecord, TDecorator >::callingContext_, edm::signalslot::Signal< T >::emit(), edm::eventsetup::Callback< T, TFunc, TReturn, TRecord, TDecorator >::getTokenIndices(), edm::WaitingTaskHolder::group(), watchdog::group, edm::eventsetup::Callback< T, TFunc, TReturn, TRecord, TDecorator >::handleMayGet(), edm::eventsetup::EventSetupRecordImpl::key(), edm::ESModuleCallingContext::kPrefetching, edm::ServiceWeakToken::lock(), edm::make_waiting_task(), edm::ActivityRegistry::preESModulePrefetchingSignal_, edm::eventsetup::Callback< T, TFunc, TReturn, TRecord, TDecorator >::prefetchNeededDataAsync(), edm::eventsetup::Callback< T, TFunc, TReturn, TRecord, TDecorator >::producer_, edm::eventsetup::Callback< T, TFunc, TReturn, TRecord, TDecorator >::runProducerAsync(), edm::ESModuleCallingContext::setContext(), TrackValidation_cff::task, edm::eventsetup::Callback< T, TFunc, TReturn, TRecord, TDecorator >::taskList_, unpackBuffers-CaloStage2::token, UNLIKELY, and edm::eventsetup::Callback< T, TFunc, TReturn, TRecord, TDecorator >::wasCalledForThisRecord_.

81  {
82  bool expected = false;
83  auto doPrefetch = wasCalledForThisRecord_.compare_exchange_strong(expected, true);
84  taskList_.add(iTask);
85  auto group = iTask.group();
86  if (doPrefetch) {
88  iRecord->activityRegistry()->preESModulePrefetchingSignal_.emit(iRecord->key(), callingContext_);
89  if UNLIKELY (producer_->hasMayConsumes()) {
90  //after prefetching need to do the mayGet
91  ServiceWeakToken weakToken = token;
92  auto mayGetTask = edm::make_waiting_task(
93  [this, iRecord, iEventSetupImpl, weakToken, group](std::exception_ptr const* iExcept) {
94  if (iExcept) {
95  runProducerAsync(group, iExcept, iRecord, iEventSetupImpl, weakToken.lock());
96  return;
97  }
98  if (handleMayGet(iRecord, iEventSetupImpl)) {
99  auto runTask = edm::make_waiting_task(
100  [this, group, iRecord, iEventSetupImpl, weakToken](std::exception_ptr const* iExcept) {
101  runProducerAsync(group, iExcept, iRecord, iEventSetupImpl, weakToken.lock());
102  });
104  iEventSetupImpl,
105  &((*postMayGetProxies_).front()),
106  weakToken.lock());
107  } else {
108  runProducerAsync(group, iExcept, iRecord, iEventSetupImpl, weakToken.lock());
109  }
110  });
111 
112  //Get everything we can before knowing about the mayGets
113  prefetchNeededDataAsync(WaitingTaskHolder(*group, mayGetTask), iEventSetupImpl, getTokenIndices(), token);
114  } else {
115  ServiceWeakToken weakToken = token;
117  [this, group, iRecord, iEventSetupImpl, weakToken](std::exception_ptr const* iExcept) {
118  runProducerAsync(group, iExcept, iRecord, iEventSetupImpl, weakToken.lock());
119  });
121  }
122  }
123  }
void prefetchNeededDataAsync(WaitingTaskHolder task, EventSetupImpl const *iImpl, ESProxyIndex const *proxies, edm::ServiceToken const &token) const
Definition: Callback.h:154
void runProducerAsync(oneapi::tbb::task_group *iGroup, std::exception_ptr const *iExcept, EventSetupRecordImpl const *iRecord, EventSetupImpl const *iEventSetupImpl, ServiceToken const &token)
Definition: Callback.h:177
std::atomic< bool > wasCalledForThisRecord_
Definition: Callback.h:233
ESModuleCallingContext callingContext_
Definition: Callback.h:226
void add(oneapi::tbb::task_group *, WaitingTask *)
Adds task to the waiting list.
FunctorWaitingTask< F > * make_waiting_task(F f)
Definition: WaitingTask.h:92
edm::propagate_const< T * > producer_
Definition: Callback.h:225
edm::WaitingTaskList taskList_
Definition: Callback.h:227
void setContext(State state, ESParentContext const &parent)
bool handleMayGet(EventSetupRecordImpl const *iRecord, EventSetupImpl const *iEventSetupImpl)
Definition: Callback.h:168
#define UNLIKELY(x)
Definition: Likely.h:21
ESProxyIndex const * getTokenIndices() const
Definition: Callback.h:151

◆ prefetchNeededDataAsync()

template<typename T , typename TFunc , typename TReturn , typename TRecord , typename TDecorator = CallbackSimpleDecorator<TRecord>>
void edm::eventsetup::Callback< T, TFunc, TReturn, TRecord, TDecorator >::prefetchNeededDataAsync ( WaitingTaskHolder  task,
EventSetupImpl const *  iImpl,
ESProxyIndex const *  proxies,
edm::ServiceToken const &  token 
) const
inlineprivate

Definition at line 154 of file Callback.h.

References edm::eventsetup::Callback< T, TFunc, TReturn, TRecord, TDecorator >::callingContext_, edm::EventSetupImpl::findImpl(), mps_fire::i, edm::eventsetup::Callback< T, TFunc, TReturn, TRecord, TDecorator >::id_, dqmiodumpmetadata::n, edm::eventsetup::EventSetupRecordImpl::prefetchAsync(), edm::eventsetup::Callback< T, TFunc, TReturn, TRecord, TDecorator >::producer_, TrackValidation_cff::task, and unpackBuffers-CaloStage2::token.

Referenced by edm::eventsetup::Callback< T, TFunc, TReturn, TRecord, TDecorator >::prefetchAsync().

157  {
158  auto recs = producer_->getTokenRecordIndices(id_);
159  auto n = producer_->numberOfTokenIndices(id_);
160  for (size_t i = 0; i != n; ++i) {
161  auto rec = iImpl->findImpl(recs[i]);
162  if (rec) {
163  rec->prefetchAsync(task, proxies[i], iImpl, token, edm::ESParentContext{&callingContext_});
164  }
165  }
166  }
ESModuleCallingContext callingContext_
Definition: Callback.h:226
edm::propagate_const< T * > producer_
Definition: Callback.h:225
const unsigned int id_
Definition: Callback.h:232

◆ runProducerAsync()

template<typename T , typename TFunc , typename TReturn , typename TRecord , typename TDecorator = CallbackSimpleDecorator<TRecord>>
void edm::eventsetup::Callback< T, TFunc, TReturn, TRecord, TDecorator >::runProducerAsync ( oneapi::tbb::task_group *  iGroup,
std::exception_ptr const *  iExcept,
EventSetupRecordImpl const *  iRecord,
EventSetupImpl const *  iEventSetupImpl,
ServiceToken const &  token 
)
inlineprivate

Definition at line 177 of file Callback.h.

References edm::eventsetup::EventSetupRecordImpl::activityRegistry(), edm::eventsetup::Callback< T, TFunc, TReturn, TRecord, TDecorator >::callingContext_, edm::eventsetup::Callback< T, TFunc, TReturn, TRecord, TDecorator >::decorator_, edm::WaitingTaskList::doneWaiting(), edm::signalslot::Signal< T >::emit(), edm::exceptionContext(), edm::eventsetup::Callback< T, TFunc, TReturn, TRecord, TDecorator >::function_, edm::eventsetup::Callback< T, TFunc, TReturn, TRecord, TDecorator >::getTokenIndices(), edm::eventsetup::EventSetupRecordImpl::key(), edm::ESModuleCallingContext::kRunning, edm::ServiceWeakToken::lock(), edm::ActivityRegistry::postESModulePrefetchingSignal_, edm::eventsetup::Callback< T, TFunc, TReturn, TRecord, TDecorator >::postMayGetProxies_, edm::ActivityRegistry::preESModuleSignal_, edm::eventsetup::Callback< T, TFunc, TReturn, TRecord, TDecorator >::producer_, edm::ESModuleCallingContext::setState(), edm::eventsetup::Callback< T, TFunc, TReturn, TRecord, TDecorator >::storeReturnedValues(), edm::eventsetup::Callback< T, TFunc, TReturn, TRecord, TDecorator >::taskList_, unpackBuffers-CaloStage2::token, edm::eventsetup::Callback< T, TFunc, TReturn, TRecord, TDecorator >::transitionID(), and edm::convertException::wrap().

Referenced by edm::eventsetup::Callback< T, TFunc, TReturn, TRecord, TDecorator >::prefetchAsync().

181  {
182  if (iExcept) {
183  //The cache held by the CallbackProxy was already set to invalid at the beginning of the IOV
184  taskList_.doneWaiting(*iExcept);
185  return;
186  }
187  iRecord->activityRegistry()->postESModulePrefetchingSignal_.emit(iRecord->key(), callingContext_);
188  ServiceWeakToken weakToken = token;
189  producer_->queue().push(*iGroup, [this, iRecord, iEventSetupImpl, weakToken]() {
191  std::exception_ptr exceptPtr;
192  try {
193  convertException::wrap([this, iRecord, iEventSetupImpl, weakToken] {
194  auto proxies = getTokenIndices();
195  if (postMayGetProxies_) {
196  proxies = &((*postMayGetProxies_).front());
197  }
198  TRecord rec;
200  rec.setImpl(iRecord, transitionID(), proxies, iEventSetupImpl, &pc);
201  ServiceRegistry::Operate operate(weakToken.lock());
202  iRecord->activityRegistry()->preESModuleSignal_.emit(iRecord->key(), callingContext_);
203  struct EndGuard {
204  EndGuard(EventSetupRecordImpl const* iRecord, ESModuleCallingContext const& iContext)
205  : record_{iRecord}, context_{iContext} {}
206  ~EndGuard() { record_->activityRegistry()->postESModuleSignal_.emit(record_->key(), context_); }
207  EventSetupRecordImpl const* record_;
208  ESModuleCallingContext const& context_;
209  };
210  EndGuard guard(iRecord, callingContext_);
211  decorator_.pre(rec);
213  decorator_.post(rec);
214  });
215  } catch (cms::Exception& iException) {
217  exceptPtr = std::current_exception();
218  }
219  taskList_.doneWaiting(exceptPtr);
220  });
221  }
std::optional< std::vector< ESProxyIndex > > postMayGetProxies_
Definition: Callback.h:224
void exceptionContext(cms::Exception &, ESModuleCallingContext const &)
std::shared_ptr< TFunc > function_
Definition: Callback.h:230
void doneWaiting(std::exception_ptr iPtr)
Signals that the resource is now available and tasks should be spawned.
ESModuleCallingContext callingContext_
Definition: Callback.h:226
unsigned int transitionID() const
Definition: Callback.h:150
edm::propagate_const< T * > producer_
Definition: Callback.h:225
edm::WaitingTaskList taskList_
Definition: Callback.h:227
auto wrap(F iFunc) -> decltype(iFunc())
void storeReturnedValues(TReturn iReturn)
Definition: Callback.h:130
ESProxyIndex const * getTokenIndices() const
Definition: Callback.h:151

◆ setData()

template<typename T , typename TFunc , typename TReturn , typename TRecord , typename TDecorator = CallbackSimpleDecorator<TRecord>>
template<class RemainingContainerT , class DataT , class ProductsT >
void edm::eventsetup::Callback< T, TFunc, TReturn, TRecord, TDecorator >::setData ( ProductsT &  iProducts)
inline

Definition at line 136 of file Callback.h.

References edm::eventsetup::moveFromTo(), edm::eventsetup::Callback< T, TFunc, TReturn, TRecord, TDecorator >::proxyData_, and groupFilesInBlocks::temp.

136  {
137  DataT* temp = reinterpret_cast<DataT*>(proxyData_[produce::find_index<TReturn, DataT>::value]);
138  if (nullptr != temp) {
139  moveFromTo(iProducts, *temp);
140  }
141  if constexpr (not std::is_same_v<produce::Null, RemainingContainerT>) {
142  setData<typename RemainingContainerT::head_type, typename RemainingContainerT::tail_type>(iProducts);
143  }
144  }
void moveFromTo(FromT &iFrom, ToT &iTo)
std::array< void *, produce::size< TReturn >::value > proxyData_
Definition: Callback.h:223

◆ storeReturnedValues()

template<typename T , typename TFunc , typename TReturn , typename TRecord , typename TDecorator = CallbackSimpleDecorator<TRecord>>
void edm::eventsetup::Callback< T, TFunc, TReturn, TRecord, TDecorator >::storeReturnedValues ( TReturn  iReturn)
inline

Definition at line 130 of file Callback.h.

Referenced by edm::eventsetup::Callback< T, TFunc, TReturn, TRecord, TDecorator >::runProducerAsync().

130  {
132  setData<typename type::head_type, typename type::tail_type>(iReturn);
133  }

◆ transitionID()

template<typename T , typename TFunc , typename TReturn , typename TRecord , typename TDecorator = CallbackSimpleDecorator<TRecord>>
unsigned int edm::eventsetup::Callback< T, TFunc, TReturn, TRecord, TDecorator >::transitionID ( ) const
inline

Member Data Documentation

◆ callingContext_

template<typename T , typename TFunc , typename TReturn , typename TRecord , typename TDecorator = CallbackSimpleDecorator<TRecord>>
ESModuleCallingContext edm::eventsetup::Callback< T, TFunc, TReturn, TRecord, TDecorator >::callingContext_
private

◆ decorator_

template<typename T , typename TFunc , typename TReturn , typename TRecord , typename TDecorator = CallbackSimpleDecorator<TRecord>>
TDecorator edm::eventsetup::Callback< T, TFunc, TReturn, TRecord, TDecorator >::decorator_
private

◆ function_

template<typename T , typename TFunc , typename TReturn , typename TRecord , typename TDecorator = CallbackSimpleDecorator<TRecord>>
std::shared_ptr<TFunc> edm::eventsetup::Callback< T, TFunc, TReturn, TRecord, TDecorator >::function_
private

◆ id_

template<typename T , typename TFunc , typename TReturn , typename TRecord , typename TDecorator = CallbackSimpleDecorator<TRecord>>
const unsigned int edm::eventsetup::Callback< T, TFunc, TReturn, TRecord, TDecorator >::id_
private

◆ postMayGetProxies_

template<typename T , typename TFunc , typename TReturn , typename TRecord , typename TDecorator = CallbackSimpleDecorator<TRecord>>
std::optional<std::vector<ESProxyIndex> > edm::eventsetup::Callback< T, TFunc, TReturn, TRecord, TDecorator >::postMayGetProxies_
private

◆ producer_

template<typename T , typename TFunc , typename TReturn , typename TRecord , typename TDecorator = CallbackSimpleDecorator<TRecord>>
edm::propagate_const<T*> edm::eventsetup::Callback< T, TFunc, TReturn, TRecord, TDecorator >::producer_
private

◆ proxyData_

template<typename T , typename TFunc , typename TReturn , typename TRecord , typename TDecorator = CallbackSimpleDecorator<TRecord>>
std::array<void*, produce::size<TReturn>::value> edm::eventsetup::Callback< T, TFunc, TReturn, TRecord, TDecorator >::proxyData_
private

◆ taskList_

template<typename T , typename TFunc , typename TReturn , typename TRecord , typename TDecorator = CallbackSimpleDecorator<TRecord>>
edm::WaitingTaskList edm::eventsetup::Callback< T, TFunc, TReturn, TRecord, TDecorator >::taskList_
private

◆ wasCalledForThisRecord_

template<typename T , typename TFunc , typename TReturn , typename TRecord , typename TDecorator = CallbackSimpleDecorator<TRecord>>
std::atomic<bool> edm::eventsetup::Callback< T, TFunc, TReturn, TRecord, TDecorator >::wasCalledForThisRecord_
private