class MClientCapRelease : public Message {
-private:
- static constexpr int HEAD_VERSION = 2;
- static constexpr int COMPAT_VERSION = 1;
public:
-
- struct ceph_mds_cap_release head;
- vector<ceph_mds_cap_item> caps;
-
- // The message receiver must wait for this OSD epoch
- // before actioning this cap release.
- epoch_t osd_epoch_barrier;
-
- MClientCapRelease() :
- Message{CEPH_MSG_CLIENT_CAPRELEASE, HEAD_VERSION, COMPAT_VERSION},
- osd_epoch_barrier(0)
- {
- memset(&head, 0, sizeof(head));
- }
-private:
- ~MClientCapRelease() override {}
-
-public:
std::string_view get_type_name() const override { return "client_cap_release";}
void print(ostream& out) const override {
out << "client_cap_release(" << caps.size() << ")";
encode_nohead(caps, payload);
encode(osd_epoch_barrier, payload);
}
+
+ struct ceph_mds_cap_release head;
+ vector<ceph_mds_cap_item> caps;
+
+ // The message receiver must wait for this OSD epoch
+ // before actioning this cap release.
+ epoch_t osd_epoch_barrier = 0;
+
+private:
+ template<class T, typename... Args>
+ friend boost::intrusive_ptr<T> ceph::make_message(Args&&... args);
+
+ static constexpr int HEAD_VERSION = 2;
+ static constexpr int COMPAT_VERSION = 1;
+
+ MClientCapRelease() :
+ Message{CEPH_MSG_CLIENT_CAPRELEASE, HEAD_VERSION, COMPAT_VERSION}
+ {
+ memset(&head, 0, sizeof(head));
+ }
+ ~MClientCapRelease() override {}
};
#endif