acl  3.5.3.0
acl_chunk_chain.h
浏览该文件的文档.
1 #ifndef ACL_CHUNK_CHAIN_INCLUDE_H
2 #define ACL_CHUNK_CHAIN_INCLUDE_H
3 
4 #ifdef __cplusplus
5 extern "C" {
6 #endif
7 
8 #include "acl_define.h"
9 
10 /**
11  * 数据链类型定义
12  */
13 typedef struct ACL_CHAIN ACL_CHAIN;
14 
15 /**
16  * 创建一个数据链对象
17  * @param init_size {size_t} 连续数据动态内存的初始尺寸大小
18  * @param off_begin {acl_int64} 连续数据块的起始位置
19  * @return {ACL_CHAIN*} 数据链对象
20  */
21 ACL_API ACL_CHAIN *acl_chain_new(size_t init_size, acl_int64 off_begin);
22 
23 /**
24  * 释放数据链对象
25  * @param chain {ACL_CHAIN*} 数据链对象
26  */
27 ACL_API void acl_chain_free(ACL_CHAIN *chain);
28 
29 /**
30  * 设置连续数据块的下一个偏移位置
31  * @param chain {ACL_CHAIN*} 数据链对象
32  * @param from_next {acl_int64} 连续数据块的下一个偏移位置
33  */
34 ACL_API void acl_chain_set_from_next(ACL_CHAIN *chain, acl_int64 from_next);
35 
36 /**
37  * 重置数据链对象,并将起始位置重置为给定值
38  * @param chain {ACL_CHAIN*} 数据链对象
39  * @param off_begin {acl_int64} 给定连接数据块的起始位置
40  */
41 ACL_API void acl_chain_reset(ACL_CHAIN *chain, acl_int64 off_begin);
42 
43 /**
44  * 获得当前数据链对象中连续数据块中的下一个位置
45  * @param chain {ACL_CHAIN*} 数据链对象
46  * @return {acl_int64} 连接数据块的下一个位置
47  */
48 ACL_API acl_int64 acl_chain_from_next(ACL_CHAIN *chain);
49 
50 /**
51  * 获得当前数据链对象的起始位置
52  * @param chain {ACL_CHAIN*} 数据链对象
53  * @return {acl_int64} 数据链的起始位置
54  */
55 ACL_API acl_int64 acl_chain_off_begin(ACL_CHAIN *chain);
56 
57 /**
58  * 获得当前数据链中连续数据块的起始存储指针地址
59  * @param chain {ACL_CHAIN*} 数据链对象
60  * @return {const char*} 连续数据块的起始存储指针地址
61  */
62 ACL_API const char *acl_chain_data(ACL_CHAIN *chain);
63 
64 /**
65  * 获得当前数据链中连续数据块的数据长度
66  * @param chain {ACL_CHAIN*} 数据链对象
67  * @return {int} 连续数据块的数据长度
68  */
69 ACL_API int acl_chain_data_len(ACL_CHAIN *chain);
70 
71 /**
72  * 当前数据链中非连续数据块的个数
73  * @param chain {ACL_CHAIN*} 数据链对象
74  * @return {int} 非连续数据块的个数
75  */
76 ACL_API int acl_chain_size(ACL_CHAIN *chain);
77 
78 /**
79  * 获得当前数据链中非连续数据块的所有数据总长度
80  * @param chain {ACL_CHAIN*} 数据链对象
81  * @return {int} 非连续数据块的总长度
82  */
83 ACL_API int acl_chain_chunk_data_len(ACL_CHAIN *chain);
84 
85 /**
86  * 向数据链中添加一个数据块,内部自动去掉重叠数据
87  * @param chain {ACL_CHAIN*} 数据链对象
88  * @param data {const void*} 数据块指针
89  * @param from {acl_int64} 该新数据块的起始位置
90  * @param dlen {int} 数据块的长度
91  */
92 ACL_API void acl_chain_add(ACL_CHAIN *chain, const void *data,
93  acl_int64 from, int dlen);
94 
95 /**
96  * 打印输出当前数据链的连续数据块及非连续数据块的起始位置信息
97  * @param chain {ACL_CHAIN*} 数据链对象
98  */
99 ACL_API void acl_chain_list(ACL_CHAIN *chain);
100 
101 #ifdef __cplusplus
102 }
103 #endif
104 
105 #endif
ACL_API acl_int64 acl_chain_off_begin(ACL_CHAIN *chain)
ACL_API void acl_chain_set_from_next(ACL_CHAIN *chain, acl_int64 from_next)
ACL_API void acl_chain_reset(ACL_CHAIN *chain, acl_int64 off_begin)
ACL_API void acl_chain_list(ACL_CHAIN *chain)
ACL_API int acl_chain_data_len(ACL_CHAIN *chain)
ACL_API acl_int64 acl_chain_from_next(ACL_CHAIN *chain)
ACL_API const char * acl_chain_data(ACL_CHAIN *chain)
ACL_API ACL_CHAIN * acl_chain_new(size_t init_size, acl_int64 off_begin)
ACL_API int acl_chain_chunk_data_len(ACL_CHAIN *chain)
ACL_API void acl_chain_free(ACL_CHAIN *chain)
ACL_API int acl_chain_size(ACL_CHAIN *chain)
ACL_API void acl_chain_add(ACL_CHAIN *chain, const void *data, acl_int64 from, int dlen)
struct ACL_CHAIN ACL_CHAIN