file_trace_reader_writer.h 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. // Copyright (c) 2011-present, Facebook, Inc. All rights reserved.
  2. // This source code is licensed under both the GPLv2 (found in the
  3. // COPYING file in the root directory) and Apache 2.0 License
  4. // (found in the LICENSE.Apache file in the root directory).
  5. #pragma once
  6. #include "rocksdb/trace_reader_writer.h"
  7. namespace ROCKSDB_NAMESPACE {
  8. class RandomAccessFileReader;
  9. class WritableFileWriter;
  10. // FileTraceReader allows reading RocksDB traces from a file.
  11. class FileTraceReader : public TraceReader {
  12. public:
  13. explicit FileTraceReader(std::unique_ptr<RandomAccessFileReader>&& reader);
  14. ~FileTraceReader();
  15. Status Read(std::string* data) override;
  16. Status Close() override;
  17. Status Reset() override;
  18. private:
  19. std::unique_ptr<RandomAccessFileReader> file_reader_;
  20. Slice result_;
  21. size_t offset_;
  22. char* const buffer_;
  23. static const unsigned int kBufferSize;
  24. };
  25. // FileTraceWriter allows writing RocksDB traces to a file.
  26. class FileTraceWriter : public TraceWriter {
  27. public:
  28. explicit FileTraceWriter(std::unique_ptr<WritableFileWriter>&& file_writer);
  29. ~FileTraceWriter();
  30. Status Write(const Slice& data) override;
  31. Status Close() override;
  32. uint64_t GetFileSize() override;
  33. private:
  34. std::unique_ptr<WritableFileWriter> file_writer_;
  35. };
  36. } // namespace ROCKSDB_NAMESPACE