MCPcopy Create free account
hub / github.com/ceph/ceph / encode_payload

Method encode_payload

src/messages/MClientReconnect.h:100–138  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

98 }
99
100 void encode_payload(uint64_t features) override {
101 if (header.version == 0) {
102 if (features & CEPH_FEATURE_MDSENC)
103 header.version = 3;
104 else if (features & CEPH_FEATURE_FLOCK)
105 header.version = 2;
106 else
107 header.version = 1;
108 }
109
110 using ceph::encode;
111 data.clear();
112
113 if (header.version >= 4) {
114 encode(caps, data);
115 encode(realms, data);
116 encode(more, data);
117 } else {
118 // compat crap
119 if (header.version == 3) {
120 encode(caps, data);
121 } else if (header.version == 2) {
122 __u32 n = caps.size();
123 encode(n, data);
124 for (auto& p : caps) {
125 encode(p.first, data);
126 p.second.encode_old(data);
127 }
128 } else {
129 std::map<inodeno_t, old_cap_reconnect_t> ocaps;
130 for (auto& p : caps) {
131 ocaps[p.first] = p.second;
132 encode(ocaps, data);
133 }
134 for (auto& r : realms)
135 r.encode_old(data);
136 }
137 }
138 }
139 void decode_payload() override {
140 using ceph::decode;
141 auto p = data.cbegin();

Callers

nothing calls this directly

Calls 4

encode_oldMethod · 0.80
encodeFunction · 0.50
clearMethod · 0.45
sizeMethod · 0.45

Tested by

no test coverage detected