]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
librbd: simplify watch/notify type encoding
authorJason Dillaman <dillaman@redhat.com>
Wed, 8 Jul 2015 19:57:15 +0000 (15:57 -0400)
committerJason Dillaman <dillaman@redhat.com>
Fri, 13 Nov 2015 01:17:53 +0000 (20:17 -0500)
Signed-off-by: Jason Dillaman <dillaman@redhat.com>
src/librbd/WatchNotifyTypes.cc
src/librbd/WatchNotifyTypes.h

index be5ce889231975a899eaeb87f849ff4e41bb89dc..af2e434d3afa21ca6420db1e7103e1c71784199b 100644 (file)
@@ -17,6 +17,7 @@ public:
 
   template <typename Payload>
   inline void operator()(const Payload &payload) const {
+    ::encode(static_cast<uint32_t>(Payload::NOTIFY_OP), m_bl);
     payload.encode(m_bl);
   }
 
@@ -45,6 +46,8 @@ public:
 
   template <typename Payload>
   inline void operator()(const Payload &payload) const {
+    NotifyOp notify_op = Payload::NOTIFY_OP;
+    m_formatter->dump_string("notify_op", stringify(notify_op));
     payload.dump(m_formatter);
   }
 
@@ -87,7 +90,6 @@ void AsyncRequestId::dump(Formatter *f) const {
 }
 
 void AcquiredLockPayload::encode(bufferlist &bl) const {
-  ::encode(static_cast<uint32_t>(NOTIFY_OP_ACQUIRED_LOCK), bl);
   ::encode(client_id, bl);
 }
 
@@ -98,14 +100,12 @@ void AcquiredLockPayload::decode(__u8 version, bufferlist::iterator &iter) {
 }
 
 void AcquiredLockPayload::dump(Formatter *f) const {
-  f->dump_string("notify_op", stringify(NOTIFY_OP_ACQUIRED_LOCK));
   f->open_object_section("client_id");
   client_id.dump(f);
   f->close_section();
 }
 
 void ReleasedLockPayload::encode(bufferlist &bl) const {
-  ::encode(static_cast<uint32_t>(NOTIFY_OP_RELEASED_LOCK), bl);
   ::encode(client_id, bl);
 }
 
@@ -116,14 +116,12 @@ void ReleasedLockPayload::decode(__u8 version, bufferlist::iterator &iter) {
 }
 
 void ReleasedLockPayload::dump(Formatter *f) const {
-  f->dump_string("notify_op", stringify(NOTIFY_OP_RELEASED_LOCK));
   f->open_object_section("client_id");
   client_id.dump(f);
   f->close_section();
 }
 
 void RequestLockPayload::encode(bufferlist &bl) const {
-  ::encode(static_cast<uint32_t>(NOTIFY_OP_REQUEST_LOCK), bl);
   ::encode(client_id, bl);
 }
 
@@ -134,25 +132,21 @@ void RequestLockPayload::decode(__u8 version, bufferlist::iterator &iter) {
 }
 
 void RequestLockPayload::dump(Formatter *f) const {
-  f->dump_string("notify_op", stringify(NOTIFY_OP_REQUEST_LOCK));
   f->open_object_section("client_id");
   client_id.dump(f);
   f->close_section();
 }
 
 void HeaderUpdatePayload::encode(bufferlist &bl) const {
-  ::encode(static_cast<uint32_t>(NOTIFY_OP_HEADER_UPDATE), bl);
 }
 
 void HeaderUpdatePayload::decode(__u8 version, bufferlist::iterator &iter) {
 }
 
 void HeaderUpdatePayload::dump(Formatter *f) const {
-  f->dump_string("notify_op", stringify(NOTIFY_OP_HEADER_UPDATE));
 }
 
 void AsyncProgressPayload::encode(bufferlist &bl) const {
-  ::encode(static_cast<uint32_t>(NOTIFY_OP_ASYNC_PROGRESS), bl);
   ::encode(async_request_id, bl);
   ::encode(offset, bl);
   ::encode(total, bl);
@@ -165,7 +159,6 @@ void AsyncProgressPayload::decode(__u8 version, bufferlist::iterator &iter) {
 }
 
 void AsyncProgressPayload::dump(Formatter *f) const {
-  f->dump_string("notify_op", stringify(NOTIFY_OP_ASYNC_PROGRESS));
   f->open_object_section("async_request_id");
   async_request_id.dump(f);
   f->close_section();
@@ -174,7 +167,6 @@ void AsyncProgressPayload::dump(Formatter *f) const {
 }
 
 void AsyncCompletePayload::encode(bufferlist &bl) const {
-  ::encode(static_cast<uint32_t>(NOTIFY_OP_ASYNC_COMPLETE), bl);
   ::encode(async_request_id, bl);
   ::encode(result, bl);
 }
@@ -185,7 +177,6 @@ void AsyncCompletePayload::decode(__u8 version, bufferlist::iterator &iter) {
 }
 
 void AsyncCompletePayload::dump(Formatter *f) const {
-  f->dump_string("notify_op", stringify(NOTIFY_OP_ASYNC_COMPLETE));
   f->open_object_section("async_request_id");
   async_request_id.dump(f);
   f->close_section();
@@ -193,7 +184,6 @@ void AsyncCompletePayload::dump(Formatter *f) const {
 }
 
 void FlattenPayload::encode(bufferlist &bl) const {
-  ::encode(static_cast<uint32_t>(NOTIFY_OP_FLATTEN), bl);
   ::encode(async_request_id, bl);
 }
 
@@ -202,14 +192,12 @@ void FlattenPayload::decode(__u8 version, bufferlist::iterator &iter) {
 }
 
 void FlattenPayload::dump(Formatter *f) const {
-  f->dump_string("notify_op", stringify(NOTIFY_OP_FLATTEN));
   f->open_object_section("async_request_id");
   async_request_id.dump(f);
   f->close_section();
 }
 
 void ResizePayload::encode(bufferlist &bl) const {
-  ::encode(static_cast<uint32_t>(NOTIFY_OP_RESIZE), bl);
   ::encode(size, bl);
   ::encode(async_request_id, bl);
 }
@@ -220,7 +208,6 @@ void ResizePayload::decode(__u8 version, bufferlist::iterator &iter) {
 }
 
 void ResizePayload::dump(Formatter *f) const {
-  f->dump_string("notify_op", stringify(NOTIFY_OP_RESIZE));
   f->dump_unsigned("size", size);
   f->open_object_section("async_request_id");
   async_request_id.dump(f);
@@ -228,7 +215,6 @@ void ResizePayload::dump(Formatter *f) const {
 }
 
 void SnapCreatePayload::encode(bufferlist &bl) const {
-  ::encode(static_cast<uint32_t>(NOTIFY_OP_SNAP_CREATE), bl);
   ::encode(snap_name, bl);
 }
 
@@ -237,12 +223,10 @@ void SnapCreatePayload::decode(__u8 version, bufferlist::iterator &iter) {
 }
 
 void SnapCreatePayload::dump(Formatter *f) const {
-  f->dump_string("notify_op", stringify(NOTIFY_OP_SNAP_CREATE));
   f->dump_string("snap_name", snap_name);
 }
 
 void SnapRenamePayload::encode(bufferlist &bl) const {
-  ::encode(static_cast<uint32_t>(NOTIFY_OP_SNAP_RENAME), bl);
   ::encode(src_snap_id, bl);
   ::encode(dst_snap_name, bl);
 }
@@ -253,12 +237,10 @@ void SnapRenamePayload::decode(__u8 version, bufferlist::iterator &iter) {
 }
 
 void SnapRenamePayload::dump(Formatter *f) const {
-  f->dump_string("notify_op", stringify(NOTIFY_OP_SNAP_RENAME));
   f->dump_unsigned("src_snap_id", src_snap_id);
   f->dump_string("dst_snap_name", dst_snap_name);
 }
 void SnapRemovePayload::encode(bufferlist &bl) const {
-  ::encode(static_cast<uint32_t>(NOTIFY_OP_SNAP_REMOVE), bl);
   ::encode(snap_name, bl);
 }
 
@@ -267,12 +249,10 @@ void SnapRemovePayload::decode(__u8 version, bufferlist::iterator &iter) {
 }
 
 void SnapRemovePayload::dump(Formatter *f) const {
-  f->dump_string("notify_op", stringify(NOTIFY_OP_SNAP_REMOVE));
   f->dump_string("snap_name", snap_name);
 }
 
 void RebuildObjectMapPayload::encode(bufferlist &bl) const {
-  ::encode(static_cast<uint32_t>(NOTIFY_OP_REBUILD_OBJECT_MAP), bl);
   ::encode(async_request_id, bl);
 }
 
@@ -281,7 +261,6 @@ void RebuildObjectMapPayload::decode(__u8 version, bufferlist::iterator &iter) {
 }
 
 void RebuildObjectMapPayload::dump(Formatter *f) const {
-  f->dump_string("notify_op", stringify(NOTIFY_OP_REBUILD_OBJECT_MAP));
   f->open_object_section("async_request_id");
   async_request_id.dump(f);
   f->close_section();
@@ -341,12 +320,12 @@ void NotifyMessage::decode(bufferlist::iterator& iter) {
   case NOTIFY_OP_SNAP_REMOVE:
     payload = SnapRemovePayload();
     break;
-  case NOTIFY_OP_REBUILD_OBJECT_MAP:
-    payload = RebuildObjectMapPayload();
-    break;
   case NOTIFY_OP_SNAP_RENAME:
     payload = SnapRenamePayload();
     break;
+  case NOTIFY_OP_REBUILD_OBJECT_MAP:
+    payload = RebuildObjectMapPayload();
+    break;
   default:
     payload = UnknownPayload();
     break;
index b81fc619461f56645f4d3b2f015d2d388e0f92ba..eaa3305e021c4b8b6f26bdb633ff359812c4f984 100644 (file)
@@ -88,6 +88,8 @@ enum NotifyOp {
 };
 
 struct AcquiredLockPayload {
+  static const NotifyOp NOTIFY_OP = NOTIFY_OP_ACQUIRED_LOCK;
+
   ClientId client_id;
 
   AcquiredLockPayload() {}
@@ -99,6 +101,8 @@ struct AcquiredLockPayload {
 };
 
 struct ReleasedLockPayload {
+  static const NotifyOp NOTIFY_OP = NOTIFY_OP_RELEASED_LOCK;
+
   ClientId client_id;
 
   ReleasedLockPayload() {}
@@ -110,6 +114,8 @@ struct ReleasedLockPayload {
 };
 
 struct RequestLockPayload {
+  static const NotifyOp NOTIFY_OP = NOTIFY_OP_REQUEST_LOCK;
+
   ClientId client_id;
 
   RequestLockPayload() {}
@@ -121,12 +127,16 @@ struct RequestLockPayload {
 };
 
 struct HeaderUpdatePayload {
+  static const NotifyOp NOTIFY_OP = NOTIFY_OP_HEADER_UPDATE;
+
   void encode(bufferlist &bl) const;
   void decode(__u8 version, bufferlist::iterator &iter);
   void dump(Formatter *f) const;
 };
 
 struct AsyncProgressPayload {
+  static const NotifyOp NOTIFY_OP = NOTIFY_OP_ASYNC_PROGRESS;
+
   AsyncProgressPayload() : offset(0), total(0) {}
   AsyncProgressPayload(const AsyncRequestId &id, uint64_t offset_, uint64_t total_)
     : async_request_id(id), offset(offset_), total(total_) {}
@@ -141,6 +151,8 @@ struct AsyncProgressPayload {
 };
 
 struct AsyncCompletePayload {
+  static const NotifyOp NOTIFY_OP = NOTIFY_OP_ASYNC_COMPLETE;
+
   AsyncCompletePayload() {}
   AsyncCompletePayload(const AsyncRequestId &id, int r)
     : async_request_id(id), result(r) {}
@@ -154,6 +166,8 @@ struct AsyncCompletePayload {
 };
 
 struct FlattenPayload {
+  static const NotifyOp NOTIFY_OP = NOTIFY_OP_FLATTEN;
+
   FlattenPayload() {}
   FlattenPayload(const AsyncRequestId &id) : async_request_id(id) {}
 
@@ -165,6 +179,8 @@ struct FlattenPayload {
 };
 
 struct ResizePayload {
+  static const NotifyOp NOTIFY_OP = NOTIFY_OP_RESIZE;
+
   ResizePayload() : size(0) {}
   ResizePayload(uint64_t size_, const AsyncRequestId &id)
     : size(size_), async_request_id(id) {}
@@ -178,6 +194,8 @@ struct ResizePayload {
 };
 
 struct SnapCreatePayload {
+  static const NotifyOp NOTIFY_OP = NOTIFY_OP_SNAP_CREATE;
+
   SnapCreatePayload() {}
   SnapCreatePayload(const std::string &name) : snap_name(name) {}
 
@@ -189,8 +207,10 @@ struct SnapCreatePayload {
 };
 
 struct SnapRenamePayload {
+  static const NotifyOp NOTIFY_OP = NOTIFY_OP_SNAP_RENAME;
+
   SnapRenamePayload() {}
-  SnapRenamePayload(const uint64_t &src_snap_id, const std::string &dst_name) 
+  SnapRenamePayload(const uint64_t &src_snap_id, const std::string &dst_name)
     : src_snap_id(src_snap_id), dst_snap_name(dst_name) {}
 
   uint64_t src_snap_id;
@@ -202,6 +222,8 @@ struct SnapRenamePayload {
 };
 
 struct SnapRemovePayload {
+  static const NotifyOp NOTIFY_OP = NOTIFY_OP_SNAP_REMOVE;
+
   SnapRemovePayload() {}
   SnapRemovePayload(const std::string &name) : snap_name(name) {}
 
@@ -213,6 +235,8 @@ struct SnapRemovePayload {
 };
 
 struct RebuildObjectMapPayload {
+  static const NotifyOp NOTIFY_OP = NOTIFY_OP_REBUILD_OBJECT_MAP;
+
   RebuildObjectMapPayload() {}
   RebuildObjectMapPayload(const AsyncRequestId &id) : async_request_id(id) {}
 
@@ -224,24 +248,26 @@ struct RebuildObjectMapPayload {
 };
 
 struct UnknownPayload {
+  static const NotifyOp NOTIFY_OP = static_cast<NotifyOp>(-1);
+
   void encode(bufferlist &bl) const;
   void decode(__u8 version, bufferlist::iterator &iter);
   void dump(Formatter *f) const;
 };
 
 typedef boost::variant<AcquiredLockPayload,
-                 ReleasedLockPayload,
-                 RequestLockPayload,
-                 HeaderUpdatePayload,
-                 AsyncProgressPayload,
-                 AsyncCompletePayload,
-                 FlattenPayload,
-                 ResizePayload,
-                 SnapCreatePayload,
-                 SnapRenamePayload,
-                 SnapRemovePayload,
-                 RebuildObjectMapPayload,
-                 UnknownPayload> Payload;
+                       ReleasedLockPayload,
+                       RequestLockPayload,
+                       HeaderUpdatePayload,
+                       AsyncProgressPayload,
+                       AsyncCompletePayload,
+                       FlattenPayload,
+                       ResizePayload,
+                       SnapCreatePayload,
+                       SnapRemovePayload,
+                       SnapRenamePayload,
+                       RebuildObjectMapPayload,
+                       UnknownPayload> Payload;
 
 struct NotifyMessage {
   NotifyMessage() : payload(UnknownPayload()) {}