24 table_(comparator_, &arena_) {
38 return comparator.Compare(a, b);
47 scratch->append(target.
data(), target.
size());
48 return scratch->data();
55 virtual bool Valid()
const {
return iter_.Valid(); }
59 virtual void Next() { iter_.Next(); }
60 virtual void Prev() { iter_.Prev(); }
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),
129 const uint64_t tag =
DecodeFixed64(key_ptr + key_length - 8);
130 switch (static_cast<ValueType>(tag & 0xff)) {
friend class MemTableIterator
uint64_t DecodeFixed64(const char *ptr)
static Status NotFound(const Slice &msg, const Slice &msg2=Slice())
const char * GetVarint32Ptr(const char *p, const char *limit, uint32_t *v)
virtual void SeekToFirst()
MemTableIterator(MemTable::Table *table)
virtual bool Valid() const
char * Allocate(size_t bytes)
static Slice GetLengthPrefixedSlice(const char *data)
virtual Status status() const
static const char * EncodeKey(std::string *scratch, const Slice &target)
const Comparator * user_comparator() const
char * EncodeVarint32(char *dst, uint32_t v)
void operator=(const MemTable &)
MemTable(const InternalKeyComparator &comparator)
void EncodeFixed64(char *buf, uint64_t value)
virtual void SeekToLast()
virtual Slice value() const
KeyComparator comparator_
int VarintLength(uint64_t v)
virtual void Seek(const Slice &k)
int operator()(const char *a, const char *b) const
void Insert(const Key &key)
virtual Slice key() const
const InternalKeyComparator comparator
MemTable::Table::Iterator iter_
Slice memtable_key() const
size_t MemoryUsage() const
size_t ApproximateMemoryUsage()
void Add(SequenceNumber seq, ValueType type, const Slice &key, const Slice &value)
bool Get(const LookupKey &key, std::string *value, Status *s)
virtual int Compare(const Slice &a, const Slice &b) const =0
const char * data() const
void PutVarint32(std::string *dst, uint32_t v)