// Copyright (c) 2011-present, Facebook, Inc. All rights reserved. // This source code is licensed under both the GPLv2 (found in the // COPYING file in the root directory) and Apache 2.0 License // (found in the LICENSE.Apache file in the root directory). #pragma once #ifndef ROCKSDB_LITE #include #include #include #include "rocksdb/slice.h" #include "rocksdb/status.h" #include "util/file_reader_writer.h" #include "utilities/blob_db/blob_log_format.h" namespace rocksdb { namespace blob_db { class BlobDumpTool { public: enum class DisplayType { kNone, kRaw, kHex, kDetail, }; BlobDumpTool(); Status Run(const std::string& filename, DisplayType key_type, DisplayType blob_type); private: std::unique_ptr reader_; std::unique_ptr buffer_; size_t buffer_size_; Status Read(uint64_t offset, size_t size, Slice* result); Status DumpBlobLogHeader(uint64_t* offset); Status DumpBlobLogFooter(uint64_t file_size, uint64_t* footer_offset); Status DumpRecord(DisplayType show_key, DisplayType show_blob, uint64_t* offset); void DumpSlice(const Slice s, DisplayType type); template std::string GetString(std::pair p); }; } // namespace blob_db } // namespace rocksdb #endif // ROCKSDB_LITE