ngx_hash.h

来自「Nginx是一个高性能的HTTP和反向代理服务器」· C头文件 代码 · 共 120 行

H
120
字号
/* * Copyright (C) Igor Sysoev */#ifndef _NGX_HASH_H_INCLUDED_#define _NGX_HASH_H_INCLUDED_#include <ngx_config.h>#include <ngx_core.h>typedef struct {    void             *value;    u_char            len;    u_char            name[1];} ngx_hash_elt_t;typedef struct {    ngx_hash_elt_t  **buckets;    ngx_uint_t        size;} ngx_hash_t;typedef struct {    ngx_hash_t        hash;    void             *value;} ngx_hash_wildcard_t;typedef struct {    ngx_str_t         key;    ngx_uint_t        key_hash;    void             *value;} ngx_hash_key_t;typedef ngx_uint_t (*ngx_hash_key_pt) (u_char *data, size_t len);typedef struct {    ngx_hash_t            hash;    ngx_hash_wildcard_t  *wc_head;    ngx_hash_wildcard_t  *wc_tail;} ngx_hash_combined_t;typedef struct {    ngx_hash_t       *hash;    ngx_hash_key_pt   key;    ngx_uint_t        max_size;    ngx_uint_t        bucket_size;    char             *name;    ngx_pool_t       *pool;    ngx_pool_t       *temp_pool;} ngx_hash_init_t;#define NGX_HASH_SMALL            1#define NGX_HASH_LARGE            2#define NGX_HASH_LARGE_ASIZE      16384#define NGX_HASH_LARGE_HSIZE      10007#define NGX_HASH_WILDCARD_KEY     1#define NGX_HASH_READONLY_KEY     2typedef struct {    ngx_uint_t        hsize;    ngx_pool_t       *pool;    ngx_pool_t       *temp_pool;    ngx_array_t       keys;    ngx_array_t      *keys_hash;    ngx_array_t       dns_wc_head;    ngx_array_t      *dns_wc_head_hash;    ngx_array_t       dns_wc_tail;    ngx_array_t      *dns_wc_tail_hash;} ngx_hash_keys_arrays_t;typedef struct {    ngx_uint_t        hash;    ngx_str_t         key;    ngx_str_t         value;    u_char           *lowcase_key;} ngx_table_elt_t;void *ngx_hash_find(ngx_hash_t *hash, ngx_uint_t key, u_char *name, size_t len);void *ngx_hash_find_wc_head(ngx_hash_wildcard_t *hwc, u_char *name, size_t len);void *ngx_hash_find_wc_tail(ngx_hash_wildcard_t *hwc, u_char *name, size_t len);void *ngx_hash_find_combined(ngx_hash_combined_t *hash, ngx_uint_t key,    u_char *name, size_t len);ngx_int_t ngx_hash_init(ngx_hash_init_t *hinit, ngx_hash_key_t *names,    ngx_uint_t nelts);ngx_int_t ngx_hash_wildcard_init(ngx_hash_init_t *hinit, ngx_hash_key_t *names,    ngx_uint_t nelts);#define ngx_hash(key, c)   ((ngx_uint_t) key * 31 + c)ngx_uint_t ngx_hash_key(u_char *data, size_t len);ngx_uint_t ngx_hash_key_lc(u_char *data, size_t len);ngx_int_t ngx_hash_keys_array_init(ngx_hash_keys_arrays_t *ha, ngx_uint_t type);ngx_int_t ngx_hash_add_key(ngx_hash_keys_arrays_t *ha, ngx_str_t *key,    void *value, ngx_uint_t flags);#endif /* _NGX_HASH_H_INCLUDED_ */

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?