]>
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; | |
1e59de90 | 23 | virtual Status Reset() override; |
11fdf7f2 TL |
24 | |
25 | private: | |
494da23a | 26 | std::unique_ptr<RandomAccessFileReader> file_reader_; |
11fdf7f2 TL |
27 | Slice result_; |
28 | size_t offset_; | |
29 | char* const buffer_; | |
30 | ||
31 | static const unsigned int kBufferSize; | |
32 | }; | |
33 | ||
34 | // FileTraceWriter allows writing RocksDB traces to a file. | |
35 | class FileTraceWriter : public TraceWriter { | |
36 | public: | |
1e59de90 | 37 | explicit FileTraceWriter(std::unique_ptr<WritableFileWriter>&& file_writer); |
11fdf7f2 TL |
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 |