/
smychkov
/
SStorage
Обзор
Документация
Войти
/
smychkov
/
SStorage
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
src/util/compression.hpp
48 строк
2 KB
Андрей Смычков
feat: util varint, crc32c, murmur3, compression (snappy)
25 апр 2026, 09:00
25 апр 2026, 09:00
a7cf584
Код
Авторство
О чём код?
#ifndef SSTORAGE_UTIL_COMPRESSION_HPP #define SSTORAGE_UTIL_COMPRESSION_HPP //============================================================================ // Обёртка над библиотекой компрессии (Snappy) //============================================================================ // Если компиляция без Snappy — все функции работают как no-op (pass-through), // тип компрессии ставится в kNone. Это позволяет собирать на системах без libsnappy. //============================================================================ #include <cstdint> #include <string> #include <cstddef> namespace sstorage { namespace util { // Типы компрессии (записываются в 1 байт в блоке) enum class CompressionType : uint8_t { kNone = 0, kSnappy = 1, }; // Сжать данные. // @param input — входной буфер // @param inputLen — длина входа // @param output — строка для записи сжатых данных (будет очищена) // @param type — выбранный тип компрессии (результат может отличаться, если компрессия не помогла) // @return тип компрессии, реально применённый (kNone если не сжато) CompressionType compress(const char* input, size_t inputLen, std::string& output, CompressionType type); // Разжать данные. // @param input — сжатый буфер // @param inputLen — длина сжатого буфера // @param output — строка для результата // @param type — тип компрессии (как было сжато) // @return true при успехе bool decompress(const char* input, size_t inputLen, std::string& output, CompressionType type); // Доступна ли Snappy-компрессия в этой сборке. bool snappyAvailable(); } } #endif