]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
mds: inode_load_vec_t now uses modern encoding
authorGreg Farnum <greg@inktank.com>
Fri, 18 Jan 2013 21:10:18 +0000 (13:10 -0800)
committerGreg Farnum <greg@inktank.com>
Fri, 8 Feb 2013 21:17:54 +0000 (13:17 -0800)
Signed-off-by: Greg Farnum <greg@inktank.com>
src/mds/mdstypes.cc
src/mds/mdstypes.h
src/test/encoding/types.h

index 545030b5957302a549d716b33dc4320cfbea2878..82f533b51ff9d3950625faf1e338aaede281bcbd 100644 (file)
@@ -741,3 +741,40 @@ void mds_table_pending_t::generate_test_instances(list<mds_table_pending_t*>& ls
   ls.back()->mds = 2;
   ls.back()->tid = 35434;
 }
+
+
+/*
+ * inode_load_vec_t
+ */
+void inode_load_vec_t::encode(bufferlist &bl) const
+{
+  ENCODE_START(2, 2, bl);
+  for (int i=0; i<NUM; i++)
+    ::encode(vec[i], bl);
+  ENCODE_FINISH(bl);
+}
+
+void inode_load_vec_t::decode(const utime_t &t, bufferlist::iterator &p)
+{
+  DECODE_START_LEGACY_COMPAT_LEN(2, 2, 2, p);
+  for (int i=0; i<NUM; i++)
+    ::decode(vec[i], t, p);
+  DECODE_FINISH(p);
+}
+
+void inode_load_vec_t::dump(Formatter *f)
+{
+  f->open_array_section("Decay Counters");
+  for (vector<DecayCounter>::const_iterator i = vec.begin(); i != vec.end(); ++i) {
+    f->open_object_section("Decay Counter");
+    i->dump(f);
+    f->close_section();
+  }
+  f->close_section();
+}
+
+void inode_load_vec_t::generate_test_instances(list<inode_load_vec_t*>& ls)
+{
+  utime_t sample;
+  ls.push_back(new inode_load_vec_t(sample));
+}
index 76a159c33ea69551fd72f291db0898c32f81015b..6b50d554058d14c808906ed3f78e421c77c6ebf2 100644 (file)
@@ -819,8 +819,11 @@ class inode_load_vec_t {
 public:
   inode_load_vec_t(const utime_t &now)
      : vec(NUM, DecayCounter(now))
-  {
-  }
+  {}
+  // for dencoder infrastructure
+  inode_load_vec_t() :
+    vec(NUM, DecayCounter())
+  {}
   DecayCounter &get(int t) { 
     assert(t < NUM);
     return vec[t]; 
@@ -829,18 +832,12 @@ public:
     for (int i=0; i<NUM; i++) 
       vec[i].reset(now);
   }
-  void encode(bufferlist &bl) const {
-    __u8 struct_v = 1;
-    ::encode(struct_v, bl);
-    for (int i=0; i<NUM; i++)
-      ::encode(vec[i], bl);
-  }
-  void decode(const utime_t &t, bufferlist::iterator &p) {
-    __u8 struct_v;
-    ::decode(struct_v, p);
-    for (int i=0; i<NUM; i++)
-      ::decode(vec[i], t, p);
-  }
+  void encode(bufferlist &bl) const;
+  void decode(const utime_t &t, bufferlist::iterator &p);
+  // for dencoder
+  void decode(bufferlist::iterator& p) { utime_t sample; decode(sample, p); }
+  void dump(Formatter *f);
+  static void generate_test_instances(list<inode_load_vec_t*>& ls);
 };
 inline void encode(const inode_load_vec_t &c, bufferlist &bl) { c.encode(bl); }
 inline void decode(inode_load_vec_t & c, const utime_t &t, bufferlist::iterator &p) {
index 2ea5b92d24cb7503006139abd26a7fa3842bd3f3..272df0aabbf35e1e043fa91d7488fd0c4c2a56cf 100644 (file)
@@ -112,6 +112,7 @@ TYPE(session_info_t)
 TYPE(string_snap_t)
 TYPE(MDSCacheObjectInfo)
 TYPE(mds_table_pending_t)
+TYPE(inode_load_vec_t)
 
 #include "mds/MDSMap.h"
 TYPE_FEATUREFUL(MDSMap)