// 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 #include "rocksdb/trace_reader_writer.h" namespace ROCKSDB_NAMESPACE { class RandomAccessFileReader; class WritableFileWriter; // FileTraceReader allows reading RocksDB traces from a file. class FileTraceReader : public TraceReader { public: explicit FileTraceReader(std::unique_ptr&& reader); ~FileTraceReader(); virtual Status Read(std::string* data) override; virtual Status Close() override; private: std::unique_ptr file_reader_; Slice result_; size_t offset_; char* const buffer_; static const unsigned int kBufferSize; }; // FileTraceWriter allows writing RocksDB traces to a file. class FileTraceWriter : public TraceWriter { public: explicit FileTraceWriter(std::unique_ptr&& file_writer) : file_writer_(std::move(file_writer)) {} ~FileTraceWriter(); virtual Status Write(const Slice& data) override; virtual Status Close() override; virtual uint64_t GetFileSize() override; private: std::unique_ptr file_writer_; }; } // namespace ROCKSDB_NAMESPACE