]>
Commit | Line | Data |
---|---|---|
f67539c2 TL |
1 | // -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*- |
2 | // vim: ts=8 sw=2 smarttab | |
3 | ||
4 | #pragma once | |
5 | ||
6 | #include <vector> | |
7 | #include <string> | |
8 | ||
9 | #include "include/types.h" | |
10 | #include "include/buffer.h" | |
11 | ||
12 | class CDC { | |
13 | public: | |
14 | virtual ~CDC() = default; | |
15 | ||
16 | /// calculate chunk boundaries as vector of (offset, length) pairs | |
17 | virtual void calc_chunks( | |
18 | const bufferlist& inputdata, | |
19 | std::vector<std::pair<uint64_t, uint64_t>> *chunks) const = 0; | |
20 | ||
21 | /// set target chunk size as a power of 2, and number of bits for hard min/max | |
22 | virtual void set_target_bits(int bits, int windowbits = 2) = 0; | |
23 | ||
24 | static std::unique_ptr<CDC> create( | |
25 | const std::string& type, | |
26 | int bits, | |
27 | int windowbits = 0); | |
28 | }; | |
29 | ||
30 | void generate_buffer(int size, bufferlist *outbl, int seed = 0); |