1 // -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*-
2 // vim: ts=8 sw=2 smarttab
4 * Ceph - scalable distributed file system
6 * Copyright (C) 2004-2006 Sage Weil <sage@newdream.net>
8 * This is free software; you can redistribute it and/or
9 * modify it under the terms of the GNU Lesser General Public
10 * License version 2.1, as published by the Free Software
11 * Foundation. See file COPYING.
15 #ifndef CEPH_MMGRBEACON_H
16 #define CEPH_MMGRBEACON_H
18 #include "messages/PaxosServiceMessage.h"
20 #include "include/types.h"
23 class MMgrBeacon
: public PaxosServiceMessage
{
25 static const int HEAD_VERSION
= 2;
26 static const int COMPAT_VERSION
= 1;
30 entity_addr_t server_addr
;
37 : PaxosServiceMessage(MSG_MGR_BEACON
, 0, HEAD_VERSION
, COMPAT_VERSION
),
38 gid(0), available(false)
42 MMgrBeacon(const uuid_d
& fsid_
, uint64_t gid_
, const std::string
&name_
,
43 entity_addr_t server_addr_
, bool available_
)
44 : PaxosServiceMessage(MSG_MGR_BEACON
, 0, HEAD_VERSION
, COMPAT_VERSION
),
45 gid(gid_
), server_addr(server_addr_
), available(available_
), name(name_
),
50 uint64_t get_gid() const { return gid
; }
51 entity_addr_t
get_server_addr() const { return server_addr
; }
52 bool get_available() const { return available
; }
53 const std::string
& get_name() const { return name
; }
54 const uuid_d
& get_fsid() const { return fsid
; }
57 ~MMgrBeacon() override
{}
61 const char *get_type_name() const override
{ return "mgrbeacon"; }
63 void print(ostream
& out
) const override
{
64 out
<< get_type_name() << " mgr." << name
<< "(" << fsid
<< ","
65 << gid
<< ", " << server_addr
<< ", " << available
<< ")";
68 void encode_payload(uint64_t features
) override
{
70 ::encode(server_addr
, payload
, features
);
71 ::encode(gid
, payload
);
72 ::encode(available
, payload
);
73 ::encode(name
, payload
);
74 ::encode(fsid
, payload
);
76 void decode_payload() override
{
77 bufferlist::iterator p
= payload
.begin();
79 ::decode(server_addr
, p
);
81 ::decode(available
, p
);
83 if (header
.version
>= 2) {