| 67 | } |
| 68 | } |
| 69 | void encode_payload(uint64_t features) override { |
| 70 | using ceph::encode; |
| 71 | encode(fsid, payload); |
| 72 | encode(epoch, payload); |
| 73 | if ((features & CEPH_FEATURE_PGID64) == 0 || |
| 74 | (features & CEPH_FEATURE_MDSENC) == 0 || |
| 75 | (features & CEPH_FEATURE_MSG_ADDR2) == 0 || |
| 76 | !HAVE_FEATURE(features, SERVER_NAUTILUS)) { |
| 77 | // reencode for old clients. |
| 78 | MDSMap m; |
| 79 | m.decode(encoded); |
| 80 | encoded.clear(); |
| 81 | m.encode(encoded, features); |
| 82 | } |
| 83 | encode(encoded, payload); |
| 84 | encode(map_fs_name, payload); |
| 85 | } |
| 86 | private: |
| 87 | template<class T, typename... Args> |
| 88 | friend boost::intrusive_ptr<T> ceph::make_message(Args&&... args); |