CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
PayloadProxy.h
Go to the documentation of this file.
1 #ifndef CondCore_IOVService_PayloadProxy_h
2 #define CondCore_IOVService_PayloadProxy_h
3 
6 
7 namespace cond {
8 
9  /* get iov by name (key, tag, ...)
10 
11  */
12  class CondGetter {
13  public:
14  virtual ~CondGetter(){}
15  virtual IOVProxy get(std::string name) const=0;
16 
17  };
18 
19  /* implementation detail:
20  implements the not templated part...
21 
22  */
24  public:
25 
26  struct ObjId {
28  unsigned int oid1;
29  unsigned int oid2;
30  };
31  typedef std::vector<ObjId> ObjIds;
32  struct Stats {
33  int nProxy;
34  int nMake;
35  int nLoad;
37  };
38 
39  // global stat
40  static Stats gstats;
41  // local stat
43 
44  // errorPolicy=true will throw on load, false will set interval and token to invalid
46  const std::string & token,
47  bool errorPolicy);
48 
49  virtual ~BasePayloadProxy();
50 
51  virtual void invalidateCache()=0;
52 
53  // current cached object token
54  std::string const & token() const { return m_token;}
55 
56  // load Element valid at time
58 
59  // load nth Element (to be used in simple iterators...)
61 
62  // find ad return interval (does not load)
64 
65  // load element if interval is valid
66  void make();
67 
68  bool isValid() const;
69 
70  TimeType timetype() const { return m_iov.timetype();}
71 
72  IOVProxy const & iov() const { return m_iov;}
73 
74  virtual void loadMore(CondGetter const &){}
75 
76  // reload the iov return true if size has changed
77  bool refresh();
78 
79 
80  private:
81  virtual bool load(cond::DbSession& session, std::string const & token) =0;
82 
83 
84  protected:
85  bool m_doThrow;
88 
89  protected:
90  // current loaded payload
91  std::string m_token;
92 
93  };
94 
95 
96  /* proxy to the payload valid at a given time...
97 
98  */
99  template<typename DataT>
101  public:
102 
104  const std::string & token,
105  bool errorPolicy,
106  const char * source=0) :
107  BasePayloadProxy(session, token, errorPolicy) {}
108 
109  virtual ~PayloadProxy(){}
110 
111  // dereference (does not load)
112  const DataT & operator()() const {
113  return (*m_data);
114  }
115 
116  virtual void invalidateCache() {
117  m_data.clear();
118  m_token.clear(); // in base....
119  }
120 
121 
122  protected:
123  virtual bool load(cond::DbSession& session, std::string const & itoken) {
124  return m_data.load(session,itoken);
125  }
126 
127  private:
129  };
130 
131 }
132 #endif // CondCore_IOVService_PayloadProxy_h
IOVElementProxy m_element
Definition: PayloadProxy.h:87
TimeType timetype() const
Definition: PayloadProxy.h:70
bool isValid() const
Definition: PayloadProxy.cc:89
std::pair< Time_t, Time_t > ValidityInterval
Definition: Time.h:19
virtual ~PayloadProxy()
Definition: PayloadProxy.h:109
TimeType timetype() const
Definition: IOVProxy.cc:129
cond::ValidityInterval loadFor(cond::Time_t time)
Definition: PayloadProxy.cc:36
TimeType
Definition: Time.h:21
BasePayloadProxy(cond::DbSession &session, const std::string &token, bool errorPolicy)
Definition: PayloadProxy.cc:24
unsigned long long Time_t
Definition: Time.h:16
cond::PayloadRef< DataT > m_data
Definition: PayloadProxy.h:128
virtual void loadMore(CondGetter const &)
Definition: PayloadProxy.h:74
virtual bool load(cond::DbSession &session, std::string const &itoken)
Definition: PayloadProxy.h:123
cond::ValidityInterval setIntervalFor(cond::Time_t time)
Definition: PayloadProxy.cc:82
virtual void invalidateCache()=0
std::vector< ObjId > ObjIds
Definition: PayloadProxy.h:31
virtual bool load(cond::DbSession &session, std::string const &token)=0
const DataT & operator()() const
Definition: PayloadProxy.h:112
virtual ~CondGetter()
Definition: PayloadProxy.h:14
IOVProxy const & iov() const
Definition: PayloadProxy.h:72
PayloadProxy(cond::DbSession &session, const std::string &token, bool errorPolicy, const char *source=0)
Definition: PayloadProxy.h:103
virtual void invalidateCache()
Definition: PayloadProxy.h:116
std::string const & token() const
Definition: PayloadProxy.h:54