blob: f5bbcc513b0d23d991b0ff9e9b89f4ab72a5ee68 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
|
#pragma once
#include "const.h"
#include <contrib/libs/brotli/c/include/brotli/encode.h>
#include <util/generic/strbuf.h>
class TBrotliDictionary: public TMoveOnly {
public:
TBrotliDictionary(const ui8* dict, size_t size, int quality = NBrotli::BEST_BROTLI_QUALITY)
: Data_(dict)
, Size_(size)
, PreparedDictionary_(
BrotliEncoderPrepareDictionary(
/*type*/ BROTLI_SHARED_DICTIONARY_RAW,
/*size*/ Size_,
/*data*/ Data_,
/*quality*/ quality,
/*alloc_func*/ nullptr,
/*free_func*/ nullptr,
/*opaque*/ nullptr))
{
}
explicit TBrotliDictionary(TStringBuf dict, int quality = NBrotli::BEST_BROTLI_QUALITY)
: TBrotliDictionary(
reinterpret_cast<const ui8*>(dict.data()),
dict.size(),
quality)
{
}
~TBrotliDictionary() {
BrotliEncoderDestroyPreparedDictionary(PreparedDictionary_);
}
BrotliEncoderPreparedDictionary* GetPreparedDictionary() const {
return PreparedDictionary_;
}
const ui8* GetData() const {
return Data_;
}
size_t GetSize() const {
return Size_;
}
private:
const ui8* Data_ = nullptr;
const size_t Size_ = 0;
BrotliEncoderPreparedDictionary* PreparedDictionary_ = nullptr;
};
|