]>
Commit | Line | Data |
---|---|---|
11fdf7f2 TL |
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 | ||
6 | #pragma once | |
7 | ||
8 | #include "rocksdb/trace_reader_writer.h" | |
9 | ||
f67539c2 | 10 | namespace ROCKSDB_NAMESPACE { |
11fdf7f2 TL |
11 | |
12 | class RandomAccessFileReader; | |
13 | class WritableFileWriter; | |
14 | ||
15 | // FileTraceReader allows reading RocksDB traces from a file. | |
16 | class FileTraceReader : public TraceReader { | |
17 | public: | |
18 | explicit FileTraceReader(std::unique_ptr<RandomAccessFileReader>&& reader); | |
19 | ~FileTraceReader(); | |
20 | ||
21 | virtual Status Read(std::string* data) override; | |
22 | virtual Status Close() override; | |
23 | ||
24 | private: | |
494da23a | 25 | std::unique_ptr<RandomAccessFileReader> file_reader_; |
11fdf7f2 TL |
26 | Slice result_; |
27 | size_t offset_; | |
28 | char* const buffer_; | |
29 | ||
30 | static const unsigned int kBufferSize; | |
31 | }; | |
32 | ||
33 | // FileTraceWriter allows writing RocksDB traces to a file. | |
34 | class FileTraceWriter : public TraceWriter { | |
35 | public: | |
36 | explicit FileTraceWriter(std::unique_ptr<WritableFileWriter>&& file_writer) | |
37 | : file_writer_(std::move(file_writer)) {} | |
38 | ~FileTraceWriter(); | |
39 | ||
40 | virtual Status Write(const Slice& data) override; | |
41 | virtual Status Close() override; | |
494da23a | 42 | virtual uint64_t GetFileSize() override; |
11fdf7f2 TL |
43 | |
44 | private: | |
494da23a | 45 | std::unique_ptr<WritableFileWriter> file_writer_; |
11fdf7f2 TL |
46 | }; |
47 | ||
f67539c2 | 48 | } // namespace ROCKSDB_NAMESPACE |