第四章 哈希表 / 4.3 函数说明

1)    LHASH *lh_new(LHASH_HASH_FN_TYPE h, LHASH_COMP_FN_TYPE c)

功能:生成哈希表

源文件:lhash.c

说明:输入参数h为哈希函数,c为比较函数。这两个函数都是回调函数。 因为哈希表用于存放任意的数据结构,哈希表存放、查询、删除等操作都需要比较数据和进行哈希运算,而哈希表不知道用户数据如何进行比较,也不知道用户数据结构中需要对哪些关键项进行散列运算。所以,用户必须提供这两个回调函数。

2)    void *lh_delete(LHASH *lh, const void *data)

源文件:lhash.c

功能:删除散列表中的一个数据

说明:data为数据结构指针。

       3)    void lh_doall(LHASH *lh, LHASH_DOALL_FN_TYPE func)

源文件:lhash.c

功能:处理哈希表中的所有数据

说明:func为外部提供的回调函数,本函数遍历所有存储在哈希表中的数据,每个数据被func处理。

       4)    void lh_doall_arg(LHASH *lh, LHASH_DOALL_ARG_FN_TYPE func, void *arg)

源文件:lhash.c

功能:处理哈希表中所有数据

说明:此参数类似于lh_doall 函数,func为外部提供的回调函数,arg为传递给func函数的参数。本函数遍历所有存储在哈希表中的数据,每个数据被func处理。

       5)    void lh_free(LHASH *lh)

源文件:lhash.c

功能:释放哈希表。

       6  void *lh_insert(LHASH *lh, void *data)

源文件:lhash.c

功能:往哈希表中添加数据。

说明:data为需要添加数据结构的指针地址。

       7  void *lh_retrieve(LHASH *lh, const void *data)

源文件:lhash.c

功能:查询数据。

说明:从哈希表中查询数据,data为数据结构地址,此数据结构中必须提供关键项(这些关键项对应于用户提供的哈希函数和比较函数)以供查询,如果查询成功,返回数据结构的地址,否则返回NULL。比如SSL握手中服务端查询以前存储的SESSION时,它需要提供其中关键的几项:

SSL_SESSION *ret=NULL,data;

       data.ssl_version=s->version;

       data.session_id_length=len;

       memcpy(data.session_id,session_id,len);

       ret=(SSL_SESSION *)lh_retrieve(s->ctx->sessions,&data);

       8  void lh_node_stats_bio(const LHASH *lh, BIO *out)

源文件:lh_stats.c

功能:将哈希表中每个链表下的数据状态输出到BIO中。

9  void lh_node_stats(const LHASH *lh, FILE *fp)

源文件:lh_stats.c

功能:将哈希表中每个链表下数据到个数输出到FILE中。

说明:此函数调用了lh_node_stats_bio函数。

10void lh_node_usage_stats_bio(const LHASH *lh, BIO *out)

源文件:lh_stats.c

功能:将哈希表的使用状态输出到BIO中。

       11       void lh_node_usage_stats(const LHASH *lh, FILE *fp)

源文件:lh_stats.c

功能:将哈希表的使用状态输出到FILE

说明:此函数调用了lh_node_usage_stats_bio函数

       12unsigned long lh_num_items(const LHASH *lh)

源文件:lhash.c

功能:获取哈希表中元素的个数。

13void lh_stats_bio(const LHASH *lh, BIO *out)

源文件:lh_stats.c

功能:输出哈希表统计信息到BIO

       14void lh_stats(const LHASH *lh, FILE *fp)

源文件:lh_stats.c

功能:打印哈希表的统计信息,此函数调用了lh_stats_bio

       15unsigned long lh_strhash(const char *c)

源文件:lhash.c

功能:计算文本字符串到哈希值。