MCPcopy Create free account
hub / github.com/MariaDB/server / request_buf_exec_generic

Method request_buf_exec_generic

plugin/handler_socket/libhsclient/hstcpcli.cpp:230–292  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

228};
229
230void
231hstcpcli::request_buf_exec_generic(size_t pst_id, const string_ref& op,
232 const string_ref *kvs, size_t kvslen, uint32_t limit, uint32_t skip,
233 const string_ref& mod_op, const string_ref *mvs, size_t mvslen,
234 const hstcpcli_filter *fils, size_t filslen, int invalues_keypart,
235 const string_ref *invalues, size_t invalueslen)
236{
237 if (num_req_sent > 0 || num_req_rcvd > 0) {
238 close();
239 set_error(-1, "request_buf_exec_generic: protocol out of sync");
240 return;
241 }
242 append_uint32(writebuf, pst_id); // FIXME size_t ?
243 writebuf.append_literal("\t");
244 writebuf.append(op.begin(), op.end());
245 writebuf.append_literal("\t");
246 append_uint32(writebuf, kvslen); // FIXME size_t ?
247 for (size_t i = 0; i < kvslen; ++i) {
248 const string_ref& kv = kvs[i];
249 append_delim_value(writebuf, kv.begin(), kv.end());
250 }
251 if (limit != 0 || skip != 0 || invalues_keypart >= 0 ||
252 mod_op.size() != 0 || filslen != 0) {
253 /* has more option */
254 writebuf.append_literal("\t");
255 append_uint32(writebuf, limit); // FIXME size_t ?
256 if (skip != 0 || invalues_keypart >= 0 ||
257 mod_op.size() != 0 || filslen != 0) {
258 writebuf.append_literal("\t");
259 append_uint32(writebuf, skip); // FIXME size_t ?
260 }
261 if (invalues_keypart >= 0) {
262 writebuf.append_literal("\t@\t");
263 append_uint32(writebuf, invalues_keypart);
264 writebuf.append_literal("\t");
265 append_uint32(writebuf, invalueslen);
266 for (size_t i = 0; i < invalueslen; ++i) {
267 const string_ref& s = invalues[i];
268 append_delim_value(writebuf, s.begin(), s.end());
269 }
270 }
271 for (size_t i = 0; i < filslen; ++i) {
272 const hstcpcli_filter& f = fils[i];
273 writebuf.append_literal("\t");
274 writebuf.append(f.filter_type.begin(), f.filter_type.end());
275 writebuf.append_literal("\t");
276 writebuf.append(f.op.begin(), f.op.end());
277 writebuf.append_literal("\t");
278 append_uint32(writebuf, f.ff_offset);
279 append_delim_value(writebuf, f.val.begin(), f.val.end());
280 }
281 if (mod_op.size() != 0) {
282 writebuf.append_literal("\t");
283 writebuf.append(mod_op.begin(), mod_op.end());
284 for (size_t i = 0; i < mvslen; ++i) {
285 const string_ref& mv = mvs[i];
286 append_delim_value(writebuf, mv.begin(), mv.end());
287 }

Callers 7

hstcpcli_mainFunction · 0.80
op_insertMethod · 0.80
op_deleteMethod · 0.80
op_updateMethod · 0.80
op_readMethod · 0.80
op_readnolockMethod · 0.80
test_11Method · 0.80

Calls 7

append_uint32Function · 0.85
append_delim_valueFunction · 0.85
append_literalMethod · 0.80
appendMethod · 0.45
beginMethod · 0.45
endMethod · 0.45
sizeMethod · 0.45

Tested by 1

test_11Method · 0.64