CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
List of all members | Public Member Functions | Protected Member Functions | Private Member Functions | Private Attributes
edm::eventsetup::DataProxy Class Referenceabstract

#include <DataProxy.h>

Inheritance diagram for edm::eventsetup::DataProxy:
edm::eventsetup::CallbackProxy< CallbackT, RecordT, DataT > edm::eventsetup::DataProxyTemplate< RecordT, DataT > DataProxy< RecordT, DataT >

Public Member Functions

bool cacheIsValid () const
 
 DataProxy ()
 
void doGet (EventSetupRecord const &iRecord, DataKey const &iKey, bool iTransiently) const
 
void const * get (EventSetupRecord const &, DataKey const &iKey, bool iTransiently) const
 
void invalidate ()
 
ComponentDescription const * providerDescription () const
 returns the description of the DataProxyProvider which owns this Proxy More...
 
void resetIfTransient ()
 
void setProviderDescription (ComponentDescription const *iDesc)
 
virtual ~DataProxy ()
 

Protected Member Functions

void clearCacheIsValid ()
 
virtual void const * getImpl (EventSetupRecord const &, DataKey const &iKey)=0
 
virtual void invalidateCache ()=0
 
virtual void invalidateTransientCache ()
 

Private Member Functions

 DataProxy (DataProxy const &)
 
DataProxy const & operator= (DataProxy const &)
 
void setCacheIsValidAndAccessType (bool iTransientAccessOnly) const
 

Private Attributes

void const * cache_
 
bool cacheIsValid_
 
ComponentDescription const * description_
 
bool nonTransientAccessRequested_
 

Detailed Description

Definition at line 33 of file DataProxy.h.

Constructor & Destructor Documentation

DataProxy< RecordT, DataT >::DataProxy ( )

Definition at line 40 of file DataProxy.cc.

40  :
41  cache_(0),
42  cacheIsValid_(false),
45 {
46 }
ComponentDescription const * description_
Definition: DataProxy.h:94
static const ComponentDescription * dummyDescription()
Definition: DataProxy.cc:32
DataProxy< RecordT, DataT >::~DataProxy ( )
virtual

Definition at line 53 of file DataProxy.cc.

54 {
55 }
edm::eventsetup::DataProxy::DataProxy ( DataProxy const &  )
private

Member Function Documentation

bool edm::eventsetup::DataProxy::cacheIsValid ( ) const
inline

Definition at line 40 of file DataProxy.h.

References cacheIsValid_.

Referenced by get(), and edm::eventsetup::EventSetupRecord::wasGotten().

40 { return cacheIsValid_; }
void DataProxy< RecordT, DataT >::clearCacheIsValid ( )
protected

Definition at line 80 of file DataProxy.cc.

References cache_, cacheIsValid_, and nonTransientAccessRequested_.

Referenced by invalidate(), and resetIfTransient().

80  {
81  cacheIsValid_ = false;
83  cache_ = 0;
84 }
void DataProxy< RecordT, DataT >::doGet ( EventSetupRecord const &  iRecord,
DataKey const &  iKey,
bool  iTransiently 
) const

Definition at line 126 of file DataProxy.cc.

Referenced by edm::eventsetup::EventSetupRecord::doGet().

126  {
127  get(iRecord, iKey, iTransiently);
128 }
const void * DataProxy< RecordT, DataT >::get ( EventSetupRecord const &  iRecord,
DataKey const &  iKey,
bool  iTransiently 
) const

Definition at line 110 of file DataProxy.cc.

References cache_, cacheIsValid(), getImpl(), and setCacheIsValidAndAccessType().

Referenced by Options.Options::__getitem__(), betterConfigParser.BetterConfigParser::__updateDict(), betterConfigParser.BetterConfigParser::getCompares(), edm::eventsetup::EventSetupRecord::getFromProxy(), betterConfigParser.BetterConfigParser::getGeneral(), and betterConfigParser.BetterConfigParser::getResultingSection().

111 {
112  if(!cacheIsValid()) {
113  cache_ = const_cast<DataProxy*>(this)->getImpl(iRecord, iKey);
114  }
115  //It is safe to always set cache to valid.
116  //We need to set the AccessType for each request so this can't be called in the if block above.
117  //This also must be before the cache_ check since we want to setCacheIsValid before a possible
118  // exception throw. If we don't, 'getImpl' will be called again on a second request for the data.
119  setCacheIsValidAndAccessType(iTransiently);
120  if(0 == cache_) {
121  throwMakeException(iRecord, iKey);
122  }
123  return cache_;
124 }
void setCacheIsValidAndAccessType(bool iTransientAccessOnly) const
Definition: DataProxy.cc:73
bool cacheIsValid() const
Definition: DataProxy.h:40
virtual void const * getImpl(EventSetupRecord const &, DataKey const &iKey)=0
virtual void const* edm::eventsetup::DataProxy::getImpl ( EventSetupRecord const &  ,
DataKey const &  iKey 
)
protectedpure virtual

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.

Implemented in edm::eventsetup::CallbackProxy< CallbackT, RecordT, DataT >, and edm::eventsetup::DataProxyTemplate< RecordT, DataT >.

Referenced by get().

void edm::eventsetup::DataProxy::invalidate ( )
inline

Definition at line 52 of file DataProxy.h.

References clearCacheIsValid(), and invalidateCache().

52  {
55  }
virtual void invalidateCache()=0
virtual void edm::eventsetup::DataProxy::invalidateCache ( )
protectedpure virtual

indicates that the Proxy should invalidate any cached information as that information has 'expired' (i.e. we have moved to a new IOV)

Implemented in edm::eventsetup::CallbackProxy< CallbackT, RecordT, DataT >, and DataProxy< RecordT, DataT >.

Referenced by invalidate(), and invalidateTransientCache().

void DataProxy< RecordT, DataT >::invalidateTransientCache ( )
protectedvirtual

indicates that the Proxy should invalidate any cached information as that information was accessed transiently and therefore is not intended to be kept over the entire IOV. Default is to call invalidateCache().

Reimplemented in DataProxy< RecordT, DataT >.

Definition at line 95 of file DataProxy.cc.

References invalidateCache().

Referenced by resetIfTransient().

95  {
97 }
virtual void invalidateCache()=0
DataProxy const& edm::eventsetup::DataProxy::operator= ( DataProxy const &  )
private
ComponentDescription const* edm::eventsetup::DataProxy::providerDescription ( ) const
inline

returns the description of the DataProxyProvider which owns this Proxy

Definition at line 46 of file DataProxy.h.

References description_.

Referenced by edm::eventsetup::EventSetupRecord::add(), edm::eventsetup::EventSetupRecord::doGet(), edm::eventsetup::EventSetupRecord::getFromProxy(), and edm::eventsetup::EventSetupRecord::providerDescription().

46  {
47  return description_;
48  }
ComponentDescription const * description_
Definition: DataProxy.h:94
void DataProxy< RecordT, DataT >::resetIfTransient ( )

Definition at line 87 of file DataProxy.cc.

References clearCacheIsValid(), invalidateTransientCache(), and nonTransientAccessRequested_.

87  {
91  }
92 }
virtual void invalidateTransientCache()
Definition: DataProxy.cc:95
void DataProxy< RecordT, DataT >::setCacheIsValidAndAccessType ( bool  iTransientAccessOnly) const
private

Definition at line 73 of file DataProxy.cc.

References cacheIsValid_, and nonTransientAccessRequested_.

Referenced by get().

73  {
74  cacheIsValid_ = true;
75  if(!iTransientAccessOnly) {
77  }
78 }
void edm::eventsetup::DataProxy::setProviderDescription ( ComponentDescription const *  iDesc)
inline

Definition at line 59 of file DataProxy.h.

References description_.

59  {
60  description_ = iDesc;
61  }
ComponentDescription const * description_
Definition: DataProxy.h:94

Member Data Documentation

void const* edm::eventsetup::DataProxy::cache_
mutableprivate

Definition at line 91 of file DataProxy.h.

Referenced by clearCacheIsValid(), and get().

bool edm::eventsetup::DataProxy::cacheIsValid_
mutableprivate

Definition at line 92 of file DataProxy.h.

Referenced by cacheIsValid(), clearCacheIsValid(), and setCacheIsValidAndAccessType().

ComponentDescription const* edm::eventsetup::DataProxy::description_
private

Definition at line 94 of file DataProxy.h.

Referenced by providerDescription(), and setProviderDescription().

bool edm::eventsetup::DataProxy::nonTransientAccessRequested_
mutableprivate

Definition at line 93 of file DataProxy.h.

Referenced by clearCacheIsValid(), resetIfTransient(), and setCacheIsValidAndAccessType().