hash.cc File Reference
#include "squid.h"
#include "hash.h"
#include <cassert>
#include <cmath>
#include <cstdlib>
#include <cstring>
Include dependency graph for hash.cc:

Go to the source code of this file.

Macros

#define HASH4a   h = (h << 5) - h + *key++;
 
#define HASH4b   h = (h << 5) + h + *key++;
 
#define HASH4   HASH4b
 

Functions

static void hash_next_bucket (hash_table *hid)
 
unsigned int hash_string (const void *data, unsigned int size)
 
unsigned int hash4 (const void *data, unsigned int size)
 
hash_tablehash_create (HASHCMP *cmp_func, int hash_sz, HASHHASH *hash_func)
 
void hash_join (hash_table *hid, hash_link *lnk)
 
hash_linkhash_lookup (hash_table *hid, const void *k)
 
void hash_first (hash_table *hid)
 
hash_linkhash_next (hash_table *hid)
 
void hash_last (hash_table *hid)
 
void hash_remove_link (hash_table *hid, hash_link *hl)
 
hash_linkhash_get_bucket (hash_table *hid, unsigned int bucket)
 
void hashFreeItems (hash_table *hid, HASHFREE *free_func)
 
void hashFreeMemory (hash_table *hid)
 
int hashPrime (int n)
 
const char * hashKeyStr (const hash_link *hl)
 

Variables

static int hash_primes []
 

Macro Definition Documentation

◆ HASH4

#define HASH4   HASH4b

◆ HASH4a

#define HASH4a   h = (h << 5) - h + *key++;

◆ HASH4b

#define HASH4b   h = (h << 5) + h + *key++;

Function Documentation

◆ hash4()

unsigned int hash4 ( const void *  data,
unsigned int  size 
)

Definition at line 50 of file hash.cc.

References HASH4, and size.

◆ hash_create()

hash_table * hash_create ( HASHCMP cmp_func,
int  hash_sz,
HASHHASH hash_func 
)

hash_create - creates a new hash table, uses the cmp_func to compare keys. Returns the identification for the hash table; otherwise returns a negative number on error.

Definition at line 108 of file hash.cc.

References hash_table::buckets, hash_table::cmp, hash_table::current_slot, DEFAULT_HASH_SIZE, hash_table::hash, int, hash_table::next, hash_table::size, and xcalloc().

Referenced by PconnPool::PconnPool(), authenticateDigestNonceSetup(), cacheCreate(), clientdbInit(), externalAclInit(), fqdncache_init(), Store::Disks::init(), Dns::Init(), ipcache_init(), main(), netdbInit(), read_passwd_file(), and Ident::Start().

◆ hash_first()

◆ hash_get_bucket()

hash_link * hash_get_bucket ( hash_table hid,
unsigned int  bucket 
)

hash_get_bucket - returns the head item of the bucket in the hash table 'hid'. Otherwise, returns NULL on error.

Definition at line 244 of file hash.cc.

References hash_table::buckets, and hash_table::size.

Referenced by clientdbGC(), and Store::LocalSearch::copyBucket().

◆ hash_join()

void hash_join ( hash_table hid,
hash_link lnk 
)

hash_join - joins a hash_link under its key lnk->key into the hash table 'hid'.

It does not copy any data into the hash table, only links pointers.

Definition at line 131 of file hash.cc.

References hash_table::buckets, hash_table::count, hash_table::hash, hash_link::key, hash_link::next, and hash_table::size.

Referenced by external_acl::add(), authenticateDigestNonceNew(), cacheStore(), clientdbAdd(), do_open(), fqdncacheAddEntry(), StoreEntry::hashInsert(), idnsStartQuery(), ipcacheAddEntry(), netdbHashInsert(), netdbHostInsert(), PconnPool::push(), read_passwd_file(), and Ident::Start().

◆ hash_last()

void hash_last ( hash_table hid)

hash_last - resets hash traversal state to NULL

Definition at line 204 of file hash.cc.

References assert, hash_table::current_slot, and hash_table::next.

Referenced by client_entry().

◆ hash_lookup()

◆ hash_next()

hash_link * hash_next ( hash_table hid)

◆ hash_next_bucket()

static void hash_next_bucket ( hash_table hid)
static

◆ hash_remove_link()

void hash_remove_link ( hash_table hid,
hash_link hl 
)

hash_remove_link - deletes the given hash_link node from the hash table 'hid'. Does not free the item, only removes it from the list.

An assertion is triggered if the hash_link is not found in the list.

Definition at line 220 of file hash.cc.

References assert, hash_table::buckets, hash_table::count, hash_table::hash, hash_next_bucket(), hash_link::key, hash_link::next, hash_table::next, and hash_table::size.

Referenced by Ident::IdentStateData::~IdentStateData(), authDigestNoncePurge(), cacheDestroy(), cachePurge(), clientdbGC(), do_close(), external_acl_cache_delete(), fqdncacheRelease(), StoreEntry::hashDelete(), idnsCallback(), ipcacheRelease(), netdbHashDelete(), netdbHostDelete(), and PconnPool::unlinkList().

◆ hash_string()

unsigned int hash_string ( const void *  data,
unsigned int  size 
)

Definition at line 30 of file hash.cc.

References size.

◆ hashFreeItems()

void hashFreeItems ( hash_table hid,
HASHFREE free_func 
)

◆ hashFreeMemory()

void hashFreeMemory ( hash_table hid)

◆ hashKeyStr()

◆ hashPrime()

int hashPrime ( int  n)

Definition at line 293 of file hash.cc.

References hash_primes, log(), and min().

Referenced by externalAclInit(), fqdncache_init(), ipcache_init(), netdbInit(), and Ident::Start().

Variable Documentation

◆ hash_primes

int hash_primes[]
static
Initial value:
= {
103,
229,
467,
977,
1979,
4019,
6037,
7951,
12149,
16231,
33493,
65357
}

Definition at line 277 of file hash.cc.

Referenced by hashPrime().

 

Introduction

Documentation

Support

Miscellaneous

Web Site Translations

Mirrors