|
| DataProxyTemplate () |
|
void | prefetchAsyncImpl (WaitingTaskHolder iTask, const EventSetupRecordImpl &iRecord, const DataKey &iKey, EventSetupImpl const *iEventSetupImpl, edm::ServiceToken const &iToken, edm::ESParentContext const &iParent) override |
|
bool | cacheIsValid () const |
|
| DataProxy () |
|
| DataProxy (DataProxy const &)=delete |
|
void const * | get (EventSetupRecordImpl const &, DataKey const &, bool iTransiently, ActivityRegistry const *, EventSetupImpl const *, ESParentContext const &) const |
|
void const * | getAfterPrefetch (const EventSetupRecordImpl &iRecord, const DataKey &iKey, bool iTransiently) const |
|
virtual void | initializeForNewIOV () |
|
void | invalidate () |
|
DataProxy const & | operator= (DataProxy const &)=delete |
|
void | prefetchAsync (WaitingTaskHolder, EventSetupRecordImpl const &, DataKey const &, EventSetupImpl const *, ServiceToken const &, ESParentContext const &) const |
|
ComponentDescription const * | providerDescription () const |
| returns the description of the DataProxyProvider which owns this Proxy More...
|
|
void | resetIfTransient () |
|
void | setProviderDescription (ComponentDescription const *iDesc) |
|
virtual | ~DataProxy () |
|
template<class RecordT, class DataT>
class edm::eventsetup::DataProxyTemplate< RecordT, DataT >
Definition at line 53 of file DataProxyTemplate.h.
template<class RecordT , class DataT >
This is the function which does the real work of getting the data if it is not already cached. The returning 'void const*' must point to an instance of the class type corresponding to the type designated in iKey. So if iKey refers to a base class interface the pointer must be a pointer to that base class interface and not a pointer to an inheriting class instance.
Implements edm::eventsetup::DataProxy.
Definition at line 60 of file DataProxyTemplate.h.
References edm::WaitingTaskList::add(), cms::cuda::assert(), edm::WaitingTaskList::doneWaiting(), edm::WaitingTaskHolder::group(), edm::eventsetup::EventSetupRecordImpl::key(), edm::eventsetup::DataProxyTemplate< RecordT, DataT >::make(), SiStripPI::max, edm::eventsetup::DataProxyTemplate< RecordT, DataT >::prefetching_, and edm::eventsetup::DataProxyTemplate< RecordT, DataT >::taskList_.
66 assert(iRecord.key() == RecordT::keyForClass());
67 bool expected =
false;
68 bool doPrefetch =
prefetching_.compare_exchange_strong(expected,
true);
72 iTask.group()->run([
this, &iRecord, iKey, iEventSetupImpl, iToken, iParent]() {
77 this->
make(rec, iKey);
void doneWaiting(std::exception_ptr iPtr)
Signals that the resource is now available and tasks should be spawned.
WaitingTaskList taskList_
void add(tbb::task_group *, WaitingTask *)
Adds task to the waiting list.
virtual const DataT * make(const RecordT &, const DataKey &)=0
std::atomic< bool > prefetching_