mirror of
https://github.com/MariaDB/server.git
synced 2025-01-16 12:02:42 +01:00
bf8b699f64
bzip2/lz4/lzma/lzo/snappy compression is now provided via *services* they're almost like normal services, but in include/providers/ and they're supposed to provide exactly the same interface as original compression libraries (but not everything, only enough of if for the code to compile). the services are implemented via dummy functions that return corresponding error values (LZMA_PROG_ERROR, LZO_E_INTERNAL_ERROR, etc). the actual compression libraries are linked into corresponding provider plugins. Providers are daemon plugins that when loaded replace service pointers to point to actual compression functions. That is, run-time dependency on compression libraries is now on plugins, and the server doesn't need any compression libraries to run, but will automatically support the compression when a plugin is loaded. InnoDB and Mroonga use compression plugins now. RocksDB doesn't, because it comes with standalone utility binaries that cannot load plugins.
122 lines
3.9 KiB
C
122 lines
3.9 KiB
C
/**
|
|
@file bzlib.h
|
|
This service provides dynamic access to BZip2.
|
|
*/
|
|
|
|
#ifndef BZIP2_INCLUDED
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
#ifndef MYSQL_ABI_CHECK
|
|
#include <stdbool.h>
|
|
#endif
|
|
|
|
#ifndef BZ_RUN
|
|
#define BZ_RUN 0
|
|
#define BZ_FINISH 2
|
|
|
|
#define BZ_OK 0
|
|
#define BZ_RUN_OK 1
|
|
#define BZ_FINISH_OK 3
|
|
#define BZ_STREAM_END 4
|
|
|
|
typedef struct
|
|
{
|
|
char *next_in;
|
|
unsigned int avail_in;
|
|
unsigned int total_in_lo32;
|
|
unsigned int total_in_hi32;
|
|
|
|
char *next_out;
|
|
unsigned int avail_out;
|
|
unsigned int total_out_lo32;
|
|
unsigned int total_out_hi32;
|
|
|
|
void *state;
|
|
|
|
void *(*bzalloc)(void *, int, int);
|
|
void (*bzfree)(void *, void *);
|
|
void *opaque;
|
|
} bz_stream;
|
|
|
|
#define BZ2_bzBuffToBuffCompress(...) provider_service_bzip2->BZ2_bzBuffToBuffCompress_ptr (__VA_ARGS__)
|
|
#define BZ2_bzBuffToBuffDecompress(...) provider_service_bzip2->BZ2_bzBuffToBuffDecompress_ptr (__VA_ARGS__)
|
|
#define BZ2_bzCompress(...) provider_service_bzip2->BZ2_bzCompress_ptr (__VA_ARGS__)
|
|
#define BZ2_bzCompressEnd(...) provider_service_bzip2->BZ2_bzCompressEnd_ptr (__VA_ARGS__)
|
|
#define BZ2_bzCompressInit(...) provider_service_bzip2->BZ2_bzCompressInit_ptr (__VA_ARGS__)
|
|
#define BZ2_bzDecompress(...) provider_service_bzip2->BZ2_bzDecompress_ptr (__VA_ARGS__)
|
|
#define BZ2_bzDecompressEnd(...) provider_service_bzip2->BZ2_bzDecompressEnd_ptr (__VA_ARGS__)
|
|
#define BZ2_bzDecompressInit(...) provider_service_bzip2->BZ2_bzDecompressInit_ptr (__VA_ARGS__)
|
|
#endif
|
|
|
|
#define DEFINE_BZ2_bzBuffToBuffCompress(NAME) NAME( \
|
|
char *dest, \
|
|
unsigned int *destLen, \
|
|
char *source, \
|
|
unsigned int sourceLen, \
|
|
int blockSize100k, \
|
|
int verbosity, \
|
|
int workFactor \
|
|
)
|
|
|
|
#define DEFINE_BZ2_bzBuffToBuffDecompress(NAME) NAME( \
|
|
char *dest, \
|
|
unsigned int *destLen, \
|
|
char *source, \
|
|
unsigned int sourceLen, \
|
|
int small, \
|
|
int verbosity \
|
|
)
|
|
|
|
#define DEFINE_BZ2_bzCompress(NAME) NAME( \
|
|
bz_stream *strm, \
|
|
int action \
|
|
)
|
|
|
|
#define DEFINE_BZ2_bzCompressEnd(NAME) NAME( \
|
|
bz_stream *strm \
|
|
)
|
|
|
|
#define DEFINE_BZ2_bzCompressInit(NAME) NAME( \
|
|
bz_stream *strm, \
|
|
int blockSize100k, \
|
|
int verbosity, \
|
|
int workFactor \
|
|
)
|
|
|
|
#define DEFINE_BZ2_bzDecompress(NAME) NAME( \
|
|
bz_stream *strm \
|
|
)
|
|
|
|
#define DEFINE_BZ2_bzDecompressEnd(NAME) NAME( \
|
|
bz_stream *strm \
|
|
)
|
|
|
|
#define DEFINE_BZ2_bzDecompressInit(NAME) NAME( \
|
|
bz_stream *strm, \
|
|
int verbosity, \
|
|
int small \
|
|
)
|
|
|
|
struct provider_service_bzip2_st{
|
|
int DEFINE_BZ2_bzBuffToBuffCompress((*BZ2_bzBuffToBuffCompress_ptr));
|
|
int DEFINE_BZ2_bzBuffToBuffDecompress((*BZ2_bzBuffToBuffDecompress_ptr));
|
|
int DEFINE_BZ2_bzCompress((*BZ2_bzCompress_ptr));
|
|
int DEFINE_BZ2_bzCompressEnd((*BZ2_bzCompressEnd_ptr));
|
|
int DEFINE_BZ2_bzCompressInit((*BZ2_bzCompressInit_ptr));
|
|
int DEFINE_BZ2_bzDecompress((*BZ2_bzDecompress_ptr));
|
|
int DEFINE_BZ2_bzDecompressEnd((*BZ2_bzDecompressEnd_ptr));
|
|
int DEFINE_BZ2_bzDecompressInit((*BZ2_bzDecompressInit_ptr));
|
|
|
|
bool is_loaded;
|
|
};
|
|
|
|
extern struct provider_service_bzip2_st *provider_service_bzip2;
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#define BZIP2_INCLUDED
|
|
#endif
|