| 96 | |
| 97 | template <typename K> |
| 98 | void Erase(const K& key) |
| 99 | { |
| 100 | ssKey.reserve(DBWRAPPER_PREALLOC_KEY_SIZE); |
| 101 | ssKey << key; |
| 102 | leveldb::Slice slKey((const char*)ssKey.data(), ssKey.size()); |
| 103 | |
| 104 | batch.Delete(slKey); |
| 105 | // LevelDB serializes erases as: |
| 106 | // - byte: header |
| 107 | // - varint: key length |
| 108 | // - byte[]: key |
| 109 | // The formula below assumes the key is less than 16kB. |
| 110 | size_estimate += 2 + (slKey.size() > 127) + slKey.size(); |
| 111 | ssKey.clear(); |
| 112 | } |
| 113 | |
| 114 | size_t SizeEstimate() const { return size_estimate; } |
| 115 | }; |