17 assert(
offset_ != ~static_cast<uint64_t>(0));
18 assert(
size_ != ~static_cast<uint64_t>(0));
33 const size_t original_size = dst->size();
34 metaindex_handle_.EncodeTo(dst);
35 index_handle_.EncodeTo(dst);
39 assert(dst->size() == original_size + kEncodedLength);
44 const char* magic_ptr = input->
data() + kEncodedLength - 8;
47 const uint64_t magic = ((
static_cast<uint64_t
>(magic_hi) << 32) |
48 (
static_cast<uint64_t
>(magic_lo)));
53 Status result = metaindex_handle_.DecodeFrom(input);
55 result = index_handle_.DecodeFrom(input);
59 const char* end = magic_ptr + 8;
75 size_t n =
static_cast<size_t>(handle.
size());
89 const char* data = contents.data();
120 if (!port::Snappy_GetUncompressedLength(data, n, &ulength)) {
124 char* ubuf =
new char[ulength];
125 if (!port::Snappy_Uncompress(data, n, ubuf)) {
void PutFixed32(std::string *dst, uint32_t value)
void PutVarint64(std::string *dst, uint64_t v)
static const uint64_t kTableMagicNumber
uint32_t DecodeFixed32(const char *ptr)
uint32_t Unmask(uint32_t masked_crc)
static Status Corruption(const Slice &msg, const Slice &msg2=Slice())
void EncodeTo(std::string *dst) const
uint32_t Value(const char *data, size_t n)
Status DecodeFrom(Slice *input)
bool GetVarint64(Slice *input, uint64_t *value)
const char * data() const
static const size_t kBlockTrailerSize
virtual Status Read(uint64_t offset, size_t n, Slice *result, char *scratch) const =0
Status ReadBlock(RandomAccessFile *file, const ReadOptions &options, const BlockHandle &handle, BlockContents *result)