td_sz.c 1.9 KB
Newer Older
T
tickduan 已提交
1 2 3 4

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
T
tickduan 已提交
5

T
tickduan 已提交
6 7
#include "td_sz.h"
#include "sz.h"
T
tickduan 已提交
8
#include "conf.h"
T
tickduan 已提交
9

T
tickduan 已提交
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
//
// Init  success return 1 else 0
//
void tdszInit(double fPrecision, double dPrecision, unsigned int maxIntervals, unsigned int intervals, const char* compressor)
{
	// need malloc
	if(confparams_cpr == NULL)
	   confparams_cpr = (sz_params*)malloc(sizeof(sz_params));    
	if(exe_params == NULL)
       exe_params = (sz_exedata*)malloc(sizeof(sz_exedata));
	 
	// set default
	setDefaulParams(exe_params, confparams_cpr);

    // overwrite with args
	confparams_cpr->absErrBound = fPrecision;
	confparams_cpr->absErrBoundDouble = dPrecision;
	confparams_cpr->max_quant_intervals = maxIntervals;
	confparams_cpr->quantization_intervals = intervals;
	if(strcmp(compressor, "GZIP_COMPRESSOR")==0)
		confparams_cpr->losslessCompressor = GZIP_COMPRESSOR;
	else if(strcmp(compressor, "ZSTD_COMPRESSOR")==0)
		confparams_cpr->losslessCompressor = ZSTD_COMPRESSOR;
	
	return ;
}
T
tickduan 已提交
36 37 38 39 40 41 42


//
// compress interface to tdengine return value is count of output with bytes
//
int tdszCompress(int type, const char * input, const int nelements, const char * output)
{
T
tickduan 已提交
43 44
	// check valid
	sz_params comp_params = *confparams_cpr;
T
tickduan 已提交
45
	
T
tickduan 已提交
46
	size_t outSize = SZ_compress_args(type, (void*)input, (size_t)nelements, (unsigned char*)output, &comp_params);	
T
tickduan 已提交
47
    return (int)outSize;
T
tickduan 已提交
48 49 50 51 52 53 54
}

//
// decompress interface to tdengine return value is count of output with bytes
//
int tdszDecompress(int type, const char * input, int compressedSize, const int nelements, const char * output)
{
T
tickduan 已提交
55 56
	size_t outSize = SZ_decompress(type, (void*)input, compressedSize, (size_t)nelements, (unsigned char*)output);
    return (int)outSize;
T
tickduan 已提交
57
}
T
tickduan 已提交
58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74

//
//  tdszExit
//
void tdszExit()
{
	if(confparams_cpr!=NULL)
	{
		free(confparams_cpr);
		confparams_cpr = NULL;
	}	
	if(exe_params!=NULL)
	{
		free(exe_params);
		exe_params = NULL;
	}
}