|
hpsocket压缩/解压缩-组件接口官方文档可以细看
7 压缩 / 解压缩
7.1 组件接口
HP-Socket 以前版本提供了单次压缩/解压相关辅助函数,所谓“单次”是指传递进压缩
/解压函数的输入数据必须是完整数据,不能是数据片段。压缩/解压函数对输入数据进行一
次性压缩/解压。因此单次压缩/解压函数能只能处理少量输入数据:
int SYS_Compress() :ZLib 压缩
int SYS_CompressEx() :ZLib 高级压缩
int SYS_Uncompress() :ZLib 解压
int SYS_UncompressEx() :高级 ZLib 解压
int SYS_GuessCompressBound() :推测 ZLib 压缩结果长度
int SYS_GZipCompress() :GZip 压缩
int SYS_GZipUncompress() :GZip 解压
int SYS_GZipGuessUncompressBound() :推测 Gzip 解压结果长度
int SYS_BrotliCompress() :Brotli 压缩
int SYS_BrotliCompressEx() :Brotli 高级压缩
int SYS_BrotliUncompress() :Brotli 解压
int SYS_BrotliGuessCompressBound() :推测 Brotli 压缩结果长度
HP-Socket v5.8.6 版本开始,提供流式数据压缩/解压接口,能处理大量输入数据或总量
不确定的流式数据
7.1.1 压缩器组件接口
图 7.1.1-1 压缩器组件接口
处理输入数据
BOOL Process(pData, iLength, bLast, pContext = nullptr)
✓ pData 待压缩数据缓冲区
✓ iLength 待压缩数据长度
✓ bLast 标识:是否最后一段数据
✓ pContext 上下文参数:传递给回调函数 Fn_CompressDataCallback
应用程序可循环调用该方法,用以压缩流式或分段数据,执行成功返回 TRUE;失败返
回 FALSE,失败时可通过 SYS_GetLastError() 获取错误码。
重置压缩器
BOOL Reset()
开始处理一个新数据流前必须重置压缩器。
(注:应用程序通常不需要显式调用该方法,因为 Process()方法在完成处理或中断处理
一个数据流后会自动重置压缩器)
检测压缩器是否可用
BOOL IsValid()
7.1.2 解压器组件接口
图 7.1.2-1 解压器组件接口
处理输入数据
BOOL Process(pData, iLength, bLast, pContext = nullptr)
✓ pDat 待解压数据缓冲区
✓ iLength 待解压数据长度
✓ pContext 上下文参数:传递给回调函数 Fn_DecompressDataCallback
应用程序可循环调用该方法,用以解压流式或分段数据,执行成功返回 TRUE;失败返
回 FALSE,失败时可通过 SYS_GetLastError() 获取错误码。
始处理一个新数据流前必须重置解压器。
(注:应用程序通常不需要显式调用该方法,因为 Process()方法在完成处理或中断处理
一个数据流后会自动重置解压器)
检测解压器是否可用
BOOL IsValid()
7.1.3 输出数据回调
输出数据回调函数
typedef BOOL (*Fn_DataCallback)(pData, iLength, bLast, pContext);
typedef Fn_DataCallback Fn_CompressDataCallback;
typedef Fn_DataCallback Fn_DecompressDataCallback;
✓ pData 待解压数据缓冲区
✓ iLength 待解压数据长度
✓ pContext 上下文参数:由 Process() 方法带人
在压缩/解压器的 Process(pData, iLength, [bLast,] pContext) 方法执行过程中,当产生输
出时会以输出数据和 pContext 为入参调用“输出数据回调函数”。该回调函数在创建压缩/解
压器对象时指定(参考:对象创建)。
回调函数返回 TRUE 继续处理;返回 FALSE 则中断处理,Process() 会返回 FALS,
SYS_GetLastError() 返回 ERROR_CANCELLED 错误码。
7.2 对象创建
目前支持 ZLib/GZip 和 Brotli 压缩算法:
创建 ZLib 压缩器对象
IHPCompressor* HP_Create_ZLibCompressor(fnCallback, iWindowBits, iLevel, iMethod,
iMemLevel, iStrategy)
✓ fnCallback 输出数据回调函数
✓ 参数默认值 iWindowBits = 15, iLevel = -1, iMethod = 8, iMemLevel = 8, iStrategy = 0
创建 GZip 压缩器对象
IHPCompressor* HP_Create_GZipCompressor(fnCallback, iLevel, iMethod, iMemLevel,
Strategy)
✓ fnCallback 输出数据回调函数
✓ 参数默认值 iLevel = -1, iMethod = 8, iMemLevel = 8, iStrategy = 0
|
|