class MMgrBeacon : public PaxosServiceMessage {
- static const int HEAD_VERSION = 1;
+ static const int HEAD_VERSION = 2;
static const int COMPAT_VERSION = 1;
protected:
entity_addr_t server_addr;
bool available;
std::string name;
+ uuid_d fsid;
public:
MMgrBeacon()
{
}
- MMgrBeacon(uint64_t gid_, const std::string &name_,
+ MMgrBeacon(const uuid_d& fsid_, uint64_t gid_, const std::string &name_,
entity_addr_t server_addr_, bool available_)
: PaxosServiceMessage(MSG_MGR_BEACON, 0, HEAD_VERSION, COMPAT_VERSION),
- gid(gid_), server_addr(server_addr_), available(available_), name(name_)
+ gid(gid_), server_addr(server_addr_), available(available_), name(name_),
+ fsid(fsid_)
{
}
entity_addr_t get_server_addr() const { return server_addr; }
bool get_available() const { return available; }
const std::string& get_name() const { return name; }
+ const uuid_d& get_fsid() const { return fsid; }
private:
~MMgrBeacon() override {}
const char *get_type_name() const override { return "mgrbeacon"; }
void print(ostream& out) const override {
- out << get_type_name() << " mgr." << name << "(" << gid << ", "
- << server_addr << ", " << available << ")";
+ out << get_type_name() << " mgr." << name << "(" << fsid << ","
+ << gid << ", " << server_addr << ", " << available << ")";
}
void encode_payload(uint64_t features) override {
::encode(gid, payload);
::encode(available, payload);
::encode(name, payload);
+ ::encode(fsid, payload);
}
void decode_payload() override {
bufferlist::iterator p = payload.begin();
::decode(gid, p);
::decode(available, p);
::decode(name, p);
+ if (header.version >= 2) {
+ ::decode(fsid, p);
+ }
}
};