MCPcopy Create free account
hub / github.com/DeNA/HandlerSocket-Plugin-for-MySQL / request_buf_exec_generic

Method request_buf_exec_generic

libhsclient/hstcpcli.cpp:229–291  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

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

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.80
beginMethod · 0.45
endMethod · 0.45
sizeMethod · 0.45

Tested by 1

test_11Method · 0.64