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

Method encode_payload

src/messages/MOSDOpReply.h:175–231  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

173
174public:
175 void encode_payload(uint64_t features) override {
176 using ceph::encode;
177 if(false == bdata_encode) {
178 OSDOp::merge_osd_op_vector_out_data(ops, data);
179 bdata_encode = true;
180 }
181
182 if ((features & CEPH_FEATURE_PGID64) == 0) {
183 header.version = 1;
184 ceph_osd_reply_head head;
185 memset(&head, 0, sizeof(head));
186 head.layout.ol_pgid = pgid.get_old_pg().v;
187 head.flags = flags;
188 head.osdmap_epoch = osdmap_epoch;
189 head.reassert_version = bad_replay_version;
190 head.result = result.get_host_to_wire();
191 head.num_ops = ops.size();
192 head.object_len = oid.name.length();
193 encode(head, payload);
194 for (unsigned i = 0; i < head.num_ops; i++) {
195 encode(ops[i].op, payload);
196 }
197 ceph::encode_nohead(oid.name, payload);
198 } else {
199 header.version = HEAD_VERSION;
200 encode(oid, payload);
201 encode(pgid, payload);
202 encode(flags, payload);
203 encode(result, payload);
204 encode(bad_replay_version, payload);
205 encode(osdmap_epoch, payload);
206
207 __u32 num_ops = ops.size();
208 encode(num_ops, payload);
209 for (unsigned i = 0; i < num_ops; i++)
210 encode(ops[i].op, payload);
211
212 encode(retry_attempt, payload);
213
214 for (unsigned i = 0; i < num_ops; i++)
215 encode(ops[i].rval, payload);
216
217 encode(replay_version, payload);
218 encode(user_version, payload);
219 if ((features & CEPH_FEATURE_NEW_OSDOPREPLY_ENCODING) == 0) {
220 header.version = 6;
221 encode(redirect, payload);
222 } else {
223 do_redirect = !redirect.empty();
224 encode(do_redirect, payload);
225 if (do_redirect) {
226 encode(redirect, payload);
227 }
228 }
229 encode_trace(payload, features);
230 }
231 }
232 void decode_payload() override {

Callers

nothing calls this directly

Calls 7

get_old_pgMethod · 0.80
get_host_to_wireMethod · 0.80
encodeFunction · 0.50
encode_noheadFunction · 0.50
sizeMethod · 0.45
lengthMethod · 0.45
emptyMethod · 0.45

Tested by

no test coverage detected