// Copyright (c) 2011-present, Facebook, Inc. All rights reserved. // This source code is licensed under the BSD-style license found in the // LICENSE file in the root directory of this source tree. An additional grant // of patent rights can be found in the PATENTS file in the same directory. // This source code is also licensed under the GPLv2 license found in the // COPYING file in the root directory of this source tree. #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