14 static Slice GetLengthPrefixedSlice(
const char* data) {
36 Slice a = GetLengthPrefixedSlice(aptr);
37 Slice b = GetLengthPrefixedSlice(bptr);
44 static const char* EncodeKey(std::string* scratch,
const Slice& target) {
47 scratch->append(target.
data(), target.
size());
48 return scratch->data();
61 virtual Slice key()
const {
return GetLengthPrefixedSlice(
iter_.key()); }
63 Slice key_slice = GetLengthPrefixedSlice(
iter_.key());
64 return GetLengthPrefixedSlice(key_slice.
data() + key_slice.
size());
70 MemTable::Table::Iterator
iter_;
90 size_t key_size = key.
size();
91 size_t val_size = value.
size();
92 size_t internal_key_size = key_size + 8;
93 const size_t encoded_len =
98 memcpy(p, key.
data(), key_size);
103 memcpy(p, value.
data(), val_size);
104 assert((p + val_size) - buf == encoded_len);
110 Table::Iterator iter(&
table_);
111 iter.Seek(memkey.
data());
122 const char* entry = iter.key();
124 const char* key_ptr =
GetVarint32Ptr(entry, entry+5, &key_length);
126 Slice(key_ptr, key_length - 8),
130 switch (static_cast<ValueType>(tag & 0xff)) {
132 Slice v = GetLengthPrefixedSlice(key_ptr + key_length);
int operator()(const char *a, const char *b) const
size_t ApproximateMemoryUsage()
uint64_t DecodeFixed64(const char *ptr)
const char * data() const
const char * GetVarint32Ptr(const char *p, const char *limit, uint32_t *v)
MemTable::Table::Iterator iter_
char * Allocate(size_t bytes)
char * EncodeVarint32(char *dst, uint32_t v)
friend class MemTableIterator
MemTable(const InternalKeyComparator &comparator)
virtual bool Valid() const
void EncodeFixed64(char *buf, uint64_t value)
const Comparator * comparator_
MemTableIterator(MemTable::Table *table)
virtual Slice key() const
void Insert(const Key &key)
virtual int Compare(const Slice &a, const Slice &b) const
unsigned long long uint64_t
virtual void SeekToLast()
static Status NotFound(const Slice &msg, const Slice &msg2=Slice())
int VarintLength(uint64_t v)
const Comparator * user_comparator() const
virtual Slice value() const
virtual Status status() const
Slice memtable_key() const
bool Get(const LookupKey &key, std::string *value, Status *s)
virtual int Compare(const Slice &a, const Slice &b) const =0
const InternalKeyComparator comparator
virtual void Seek(const Slice &k)
void Add(SequenceNumber seq, ValueType type, const Slice &key, const Slice &value)
virtual void SeekToFirst()
void operator=(const MemTable &)
void PutVarint32(std::string *dst, uint32_t v)
size_t MemoryUsage() const
KeyComparator comparator_