13#include "common/lang/string.h"
17static const uint8_t SEQ_SIZE = 8;
18static const uint8_t LOOKUP_KEY_PREFIX_SIZE = 8;
31void put_numeric(
string *dst, T v)
33 dst->append(
reinterpret_cast<char *
>(&v),
sizeof(T));
47T get_numeric(
const char *src)
50 memcpy(&value, src,
sizeof(T));
64inline string_view extract_user_key(
const string_view &internal_key)
66 return string_view(internal_key.data(), internal_key.size() - SEQ_SIZE);
78inline uint64_t extract_sequence(
const string_view &internal_key)
80 return get_numeric<uint64_t>(internal_key.data() + internal_key.size() - SEQ_SIZE);
93inline size_t user_key_size_from_lookup_key(
const string_view &lookup_key)
95 return lookup_key.size() - SEQ_SIZE - LOOKUP_KEY_PREFIX_SIZE;
107inline string_view extract_user_key_from_lookup_key(
const string_view &lookup_key)
109 return string_view(lookup_key.data() + LOOKUP_KEY_PREFIX_SIZE, user_key_size_from_lookup_key(lookup_key));
112inline string_view extract_internal_key(
const string_view &lookup_key)
114 return string_view(lookup_key.data() + LOOKUP_KEY_PREFIX_SIZE, lookup_key.size() - LOOKUP_KEY_PREFIX_SIZE);
117inline string_view get_length_prefixed_string(
const char *data)
119 size_t len = get_numeric<size_t>(data);
120 const char *p = data +
sizeof(size_t);
121 return string_view(p, len);