blob: 0f760ed2005e28489f62057b114979b25e68a151 [file] [log] [blame]
Tom Cherry1a796bc2020-05-13 09:28:37 -07001/*
2 * Copyright (C) 2020 The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17#pragma once
18
Tom Cherryb6cb9922020-06-24 13:51:04 -070019#include <memory>
20
21#include "SerializedData.h"
Tom Cherry1a796bc2020-05-13 09:28:37 -070022
23class CompressionEngine {
24 public:
25 static CompressionEngine& GetInstance();
26
27 virtual ~CompressionEngine(){};
28
Tom Cherryb6cb9922020-06-24 13:51:04 -070029 virtual bool Compress(SerializedData& in, size_t data_length, SerializedData& out) = 0;
30 // Decompress the contents of `in` into `out`. `out.size()` must be set to the decompressed
31 // size of the contents.
32 virtual bool Decompress(SerializedData& in, SerializedData& out) = 0;
Tom Cherry1a796bc2020-05-13 09:28:37 -070033};
34
35class ZlibCompressionEngine : public CompressionEngine {
36 public:
Tom Cherryb6cb9922020-06-24 13:51:04 -070037 bool Compress(SerializedData& in, size_t data_length, SerializedData& out) override;
38 bool Decompress(SerializedData& in, SerializedData& out) override;
Tom Cherry1a796bc2020-05-13 09:28:37 -070039};
40
41class ZstdCompressionEngine : public CompressionEngine {
42 public:
Tom Cherryb6cb9922020-06-24 13:51:04 -070043 bool Compress(SerializedData& in, size_t data_length, SerializedData& out) override;
44 bool Decompress(SerializedData& in, SerializedData& out) override;
Tom Cherry1a796bc2020-05-13 09:28:37 -070045};