#include "msg/Message.h"
#include "mon/mon_types.h"
-class MMonScrub : public Message
-{
- static const int HEAD_VERSION = 2;
- static const int COMPAT_VERSION = 2;
+class MMonScrub : public MessageInstance<MMonScrub> {
+public:
+ friend factory;
+private:
+ static constexpr int HEAD_VERSION = 2;
+ static constexpr int COMPAT_VERSION = 2;
public:
typedef enum {
switch (op) {
case OP_SCRUB: return "scrub";
case OP_RESULT: return "result";
- default: assert(0 == "unknown op type"); return NULL;
+ default: ceph_abort_msg("unknown op type"); return NULL;
}
}
- op_type_t op;
- version_t version;
+ op_type_t op = OP_SCRUB;
+ version_t version = 0;
ScrubResult result;
int32_t num_keys;
pair<string,string> key;
MMonScrub()
- : Message(MSG_MON_SCRUB, HEAD_VERSION, COMPAT_VERSION),
+ : MessageInstance(MSG_MON_SCRUB, HEAD_VERSION, COMPAT_VERSION),
num_keys(-1)
{ }
MMonScrub(op_type_t op, version_t v, int32_t num_keys)
- : Message(MSG_MON_SCRUB, HEAD_VERSION, COMPAT_VERSION),
+ : MessageInstance(MSG_MON_SCRUB, HEAD_VERSION, COMPAT_VERSION),
op(op), version(v), num_keys(num_keys)
{ }
- const char *get_type_name() const override { return "mon_scrub"; }
+ std::string_view get_type_name() const override { return "mon_scrub"; }
void print(ostream& out) const override {
out << "mon_scrub(" << get_opname((op_type_t)op);
}
void encode_payload(uint64_t features) override {
+ using ceph::encode;
uint8_t o = op;
- ::encode(o, payload);
- ::encode(version, payload);
- ::encode(result, payload);
- ::encode(num_keys, payload);
- ::encode(key, payload);
+ encode(o, payload);
+ encode(version, payload);
+ encode(result, payload);
+ encode(num_keys, payload);
+ encode(key, payload);
}
void decode_payload() override {
- bufferlist::iterator p = payload.begin();
+ auto p = payload.cbegin();
uint8_t o;
- ::decode(o, p);
+ decode(o, p);
op = (op_type_t)o;
- ::decode(version, p);
- ::decode(result, p);
- ::decode(num_keys, p);
- ::decode(key, p);
+ decode(version, p);
+ decode(result, p);
+ decode(num_keys, p);
+ decode(key, p);
}
};