acl
3.5.3.0
|
#include "../stdlib/acl_define.h"
#include "../stdlib/acl_vstring.h"
#include "../stdlib/acl_fhandle.h"
类 | |
struct | ZDB_DISK |
struct | ZDB_CFG |
struct | ZDB |
struct | ZDB_DAT_HDR |
struct | ZDB_KEY_HDR |
struct | ZDB_BLK_HDR |
struct | ZDB_BLK_OFF |
struct | ZDB_BLK |
struct | ZDB_STORE |
struct | ZDB_KEY_STORE |
struct | ZDB_DAT_STORE |
宏定义 | |
#define | ZDB_FLAG_LINK_BUSY (1 << 0) /* 将值存储中的占用数据块连接起来 */ |
#define | ZDB_FLAG_OPEN_LOCK (1 << 1) /* 以加锁模式打开存储句柄 */ |
#define | ZDB_FLAG_CACHE_DAT (1 << 2) /* 是否缓存值存储的数据 */ |
#define | ZDB_FLAG_CACHE_KEY (1 << 3) /* 是否缓存键存储的数据 */ |
#define | ZDB_FLAG_SLICE_KEY (1 << 4) /* 启用值存储时是否采用内存切片方式 */ |
#define | ZDB_FLAG_SLICE_DAT (1 << 5) /* 启用键存储时是否采用内存切片方式 */ |
#define | ZDB_STAT_KEY_NEW (1 << 0) /* 新键 */ |
#define | STORE_FLAG_KEY (1 << 0) /* 表示是键存储 */ |
#define | STORE_FLAG_DAT (1 << 1) /* 表示是值存储 */ |
#define | STORE_FLAG_IO_SLICE (1 << 2) /* 是否启用 ZDB_IO 的内存切片分配方式 */ |
#define | zdb_blk_data(b) ((b)->dat) |
#define | zdb_blk_free(b) acl_myfree((b)) |
类型定义 | |
typedef struct ZDB | ZDB |
typedef struct ZDB_KEY_HDR | ZDB_KEY_HDR |
typedef struct ZDB_BLK | ZDB_BLK |
typedef struct ZDB_BLK_OFF | ZDB_BLK_OFF |
typedef struct ZDB_DAT_HDR | ZDB_DAT_HDR |
typedef struct ZDB_KEY_STORE | ZDB_KEY_STORE |
typedef struct ZDB_DAT_STORE | ZDB_DAT_STORE |
typedef struct ZDB_IO | ZDB_IO |
typedef acl_int64 | zdb_off_t |
typedef acl_int64 | zdb_key_t |
typedef int | zdb_lnk_t |
typedef struct ZDB_DISK | ZDB_DISK |
typedef struct ZDB_CFG | ZDB_CFG |
typedef struct ZDB_BLK_HDR | ZDB_BLK_HDR |
typedef struct ZDB_STORE | ZDB_STORE |
函数 | |
ACL_API void | zdb_test (const char *cmd) |
ACL_API void | zdb_init (void) |
ACL_API void | zdb_end (void) |
ACL_API void | zdb_sync (ZDB *db) |
ACL_API ZDB * | zdb_open (const char *dbname, unsigned int oflags, const ZDB_CFG *cfg) |
ACL_API void | zdb_close (ZDB *db) |
ACL_API ZDB_BLK * | zdb_lookup (ZDB *db, zdb_key_t key, size_t *size, ZDB_BLK_OFF *blk_off_buf) |
ACL_API int | zdb_update (ZDB *db, zdb_key_t key, const ZDB_BLK_OFF *blk_off_saved, const void *dat, size_t len) |
ACL_API int | key_store_header_sync (ZDB_KEY_STORE *store) |
ACL_API ZDB_KEY_STORE * | zdb_key_store_open (ZDB *db, zdb_key_t key) |
ACL_API ZDB_KEY_STORE * | zdb_key_store_open2 (ZDB *db, const char *filepath) |
ACL_API void | zdb_key_store_close (ZDB_KEY_STORE *store) |
ACL_API int | zdb_key_set (ZDB *db, zdb_key_t key, const ZDB_BLK_OFF *blk_off) |
ACL_API int | zdb_key_get (ZDB *db, zdb_key_t key, ZDB_BLK_OFF *blk_off) |
ACL_API int | zdb_key_status (ZDB *db, const char *filepath, ZDB_KEY_HDR *key_hdr) |
ACL_API int | zdb_key_check3 (ZDB *db, const char *filepath, ZDB_KEY_HDR *key_hdr) |
ACL_API int | zdb_key_check (ZDB_KEY_STORE *store, ZDB_KEY_HDR *key_hdr) |
ACL_API int | zdb_key_init (ZDB *db, zdb_key_t key_begin, zdb_key_t key_end) |
ACL_API int | dat_store_header_sync (ZDB_DAT_STORE *store) |
ACL_API void | zdb_dat_store_close (ZDB_DAT_STORE *store) |
ACL_API ZDB_DAT_STORE * | zdb_dat_store_open (ZDB *db, const char *filepath) |
ACL_API ZDB_BLK * | zdb_dat_get (ZDB *db, const ZDB_BLK_OFF *blk_off, zdb_key_t *key, size_t *size) |
ACL_API int | zdb_dat_add (ZDB *db, zdb_key_t key, const void *dat, int len) |
ACL_API int | zdb_dat_update (ZDB *db, zdb_key_t key, const ZDB_BLK_OFF *blk_off, const void *dat, size_t len) |
ACL_API int | zdb_dat_stat (ZDB *db, const char *filepath, ZDB_DAT_HDR *dat_hdr) |
ACL_API int | zdb_dat_check3 (ZDB *db, const char *filepath, ZDB_DAT_HDR *dat_hdr) |
ACL_API int | zdb_dat_check (ZDB_DAT_STORE *store, ZDB_DAT_HDR *dat_hdr) |
ACL_API int | zdb_key_walk (ZDB *db, int(*walk_fn)(ZDB_KEY_STORE *store)) |
ACL_API int | zdb_dat_walk (ZDB *db, int(*walk_fn)(ZDB_DAT_STORE *store)) |
ACL_API void | zdb_dat_iter_set (ZDB_DAT_STORE *store, int read_data) |
#define zdb_blk_data | ( | b | ) | ((b)->dat) |
#define zdb_blk_free | ( | b | ) | acl_myfree((b)) |
typedef struct ZDB_BLK_HDR ZDB_BLK_HDR |
typedef struct ZDB_BLK_OFF ZDB_BLK_OFF |
typedef struct ZDB_DAT_HDR ZDB_DAT_HDR |
typedef struct ZDB_DAT_STORE ZDB_DAT_STORE |
typedef struct ZDB_KEY_HDR ZDB_KEY_HDR |
typedef struct ZDB_KEY_STORE ZDB_KEY_STORE |
ACL_API int dat_store_header_sync | ( | ZDB_DAT_STORE * | store | ) |
同步值存储头至磁盘
store | {ZDB_DAT_STORE*} 值存储句柄 |
ACL_API int key_store_header_sync | ( | ZDB_KEY_STORE * | store | ) |
同步键存储头至磁盘
store | {ZDB_KEY_STORE*} 值存储句柄 |
向值存储中添加新数据
db | {ZDB*} |
key | {zdb_key_t} 键值 |
dat | {const void*} 数据地址 |
len | {size_t} dat 数据长度 |
ACL_API int zdb_dat_check | ( | ZDB_DAT_STORE * | store, |
ZDB_DAT_HDR * | dat_hdr | ||
) |
ACL_API int zdb_dat_check3 | ( | ZDB * | db, |
const char * | filepath, | ||
ZDB_DAT_HDR * | dat_hdr | ||
) |
检查值存储中的数据块的正确性
db | {ZDB*} |
filepath | {const char*} 值存储文件名 |
dat_hdr | {ZDB_DAT_HDR*} 若非空则存储值存储头信息 |
ACL_API ZDB_BLK* zdb_dat_get | ( | ZDB * | db, |
const ZDB_BLK_OFF * | blk_off, | ||
zdb_key_t * | key, | ||
size_t * | size | ||
) |
从值存储中取得对应的数据
db | {ZDB*} |
blk_off | {const ZDB_BLK_OFF*} |
key | {zdb_key_t*} 存储键的值 |
size | {size_t*} 存储数据的长度 |
ACL_API void zdb_dat_iter_set | ( | ZDB_DAT_STORE * | store, |
int | read_data | ||
) |
设置值存储的迭代器
store | {ZDB_DAT_STORE*} |
read_data | {int} 是否需要读取数据块中的数据部分, !0: 表示读取数据块中的 数据部分; 0: 仅读取数据块中的头 |
ACL_API int zdb_dat_stat | ( | ZDB * | db, |
const char * | filepath, | ||
ZDB_DAT_HDR * | dat_hdr | ||
) |
读取值存储的头信息
db | {ZDB*} |
filepath | {const char*} 值存储文件名 |
dat_hdr | {ZDB_DAT_HDR*} 存储结果 @retur {int} 0: ok; -1: error |
ACL_API void zdb_dat_store_close | ( | ZDB_DAT_STORE * | store | ) |
关闭值存储
store | {ZDB_DAT_STORE*} 值存储句柄 |
ACL_API ZDB_DAT_STORE* zdb_dat_store_open | ( | ZDB * | db, |
const char * | filepath | ||
) |
打开或创建值存储
filepath | {const char*} 值存储文件全路径 |
ACL_API int zdb_dat_update | ( | ZDB * | db, |
zdb_key_t | key, | ||
const ZDB_BLK_OFF * | blk_off, | ||
const void * | dat, | ||
size_t | len | ||
) |
更新值存储中的数据信息
db | {ZDB*} |
key | {zdb_key_t} 键 |
blk_off | {const ZDB_BLK_OFF*} 存储于键存储中相应值的位置信息 |
dat | {const void*} 数据地址 |
len | {size_t} dat 数据长度 |
ACL_API int zdb_dat_walk | ( | ZDB * | db, |
int(*)(ZDB_DAT_STORE *store) | walk_fn | ||
) |
ACL_API void zdb_end | ( | void | ) |
程序退出前需要释放 zdb 内部一些资源
ACL_API void zdb_init | ( | void | ) |
程序开始运行时需要初始化 zdb
ACL_API int zdb_key_check | ( | ZDB_KEY_STORE * | store, |
ZDB_KEY_HDR * | key_hdr | ||
) |
ACL_API int zdb_key_check3 | ( | ZDB * | db, |
const char * | filepath, | ||
ZDB_KEY_HDR * | key_hdr | ||
) |
遍历键存储中的键的状态
db | {ZDB*} |
filepath | {const char*} 键存储文件全路径 |
key_hdr | {ZDB_KEY_HDR*} 若非空则用来存放键存储头信息的内存地址 |
ACL_API int zdb_key_get | ( | ZDB * | db, |
zdb_key_t | key, | ||
ZDB_BLK_OFF * | blk_off | ||
) |
根据键值从键存储中取得该键所对应的数据索引位置
db | {ZDB*} |
key | {zdb_key_t} 键值 |
blk_off | {ZDB_BLK_OFF*} 存储结果的对象 |
初始化键存储
db | {ZDB*} |
key_begin | {zdb_key_t} 起始键值 |
key_end | {zdb_key_t} 结束键值 |
ACL_API int zdb_key_set | ( | ZDB * | db, |
zdb_key_t | key, | ||
const ZDB_BLK_OFF * | blk_off | ||
) |
设置键存储中键位置的值位置值
db | {ZDB*} |
key | {zdb_key_t} |
blk_off | {const ZDB_BLK_OFF*} |
ACL_API int zdb_key_status | ( | ZDB * | db, |
const char * | filepath, | ||
ZDB_KEY_HDR * | key_hdr | ||
) |
查询键存储头的状态
db | {ZDB*} |
filepath | {const char*} 键存储文件全路径 |
key_hdr | {ZDB_KEY_HDR*} 用来存放键存储头信息的内存地址 |
ACL_API void zdb_key_store_close | ( | ZDB_KEY_STORE * | store | ) |
关闭键存储
store | {ZDB_KEY_STORE*} 键存储句柄 |
ACL_API ZDB_KEY_STORE* zdb_key_store_open | ( | ZDB * | db, |
zdb_key_t | key | ||
) |
根据键值打开键存储
db | {ZDB*} |
key | {zdb_key_t} 键值 |
ACL_API ZDB_KEY_STORE* zdb_key_store_open2 | ( | ZDB * | db, |
const char * | filepath | ||
) |
根据文件名打开键存储
db | {ZDB*} |
filepath | {const char*} 文件名 |
ACL_API int zdb_key_walk | ( | ZDB * | db, |
int(*)(ZDB_KEY_STORE *store) | walk_fn | ||
) |
ACL_API ZDB_BLK* zdb_lookup | ( | ZDB * | db, |
zdb_key_t | key, | ||
size_t * | size, | ||
ZDB_BLK_OFF * | blk_off_buf | ||
) |
在 ZDB 数据库中查找相应键值的数据
db | {ZDB*} ZDB 数据库句柄 |
key | {zdb_key_t} 键值 |
size | {size_t*} 若此指针非空且查询结果也非空则存储查询结果的数据长度, 即是 ZDB_BLK.dat 中存储数据的长度 |
blk_off_buf | {ZDB_BLK_OFF*} 若非空则存储所查值的偏移位置索引号 |
ACL_API void zdb_sync | ( | ZDB * | db | ) |
更新ZDB相关信息至磁盘
db | {ZDB*} |
ACL_API void zdb_test | ( | const char * | cmd | ) |
zdb 测试函数
ACL_API int zdb_update | ( | ZDB * | db, |
zdb_key_t | key, | ||
const ZDB_BLK_OFF * | blk_off_saved, | ||
const void * | dat, | ||
size_t | len | ||
) |
添加或更新 ZDB 数据库中的数据
db | {ZDB*} ZDB 数据库句柄 |
key | {zdb_key_t} 键值 |
blk_off_saved | {const ZDB_BLK_OFF*} 上次调用 zdb_lookup()/4 时的返回结果, 从而通过重复利用查询结果来提高效率, 如果在调用 zdb_lookup()/4 时返回结果为空, 则调用 zdb_update()/5 时必须将此值置 NULL |
dat | {const void*} 键 key 所对应的数据地址 |
len | {size_t} dat 数据长度 |