MCPcopy Create free account
hub / github.com/apple/foundationdb / encode

Function encode

fdbserver/KeyValueStoreSQLite.actor.cpp:453–475  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

451}
452
453Value encode(KeyValueRef kv) {
454 int keyCode = kv.key.size() * 2 + 12;
455 int valCode = kv.value.size() * 2 + 12;
456 int header_size = sqlite3VarintLen(keyCode) + sqlite3VarintLen(valCode);
457 int hh = sqlite3VarintLen(header_size);
458 header_size += hh;
459 if (hh < sqlite3VarintLen(header_size))
460 header_size++;
461 int size = header_size + kv.key.size() + kv.value.size();
462
463 Value v;
464 uint8_t* d = new (v.arena()) uint8_t[size];
465 ((ValueRef&)v) = KeyRef(d, size);
466 d += sqlite3PutVarint(d, header_size);
467 d += sqlite3PutVarint(d, keyCode);
468 d += sqlite3PutVarint(d, valCode);
469 memcpy(d, kv.key.begin(), kv.key.size());
470 d += kv.key.size();
471 memcpy(d, kv.value.begin(), kv.value.size());
472 d += kv.value.size();
473 ASSERT(d == v.begin() + size);
474 return v;
475}
476
477// Fragments are encoded as (key, index, value) tuples
478// An index of 0 indicates an unfragmented KV pair.

Callers 1

setMethod · 0.70

Calls 4

KeyRefClass · 0.85
memcpyFunction · 0.85
sizeMethod · 0.45
beginMethod · 0.45

Tested by

no test coverage detected