You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
kamailio/modules/rtpengine/rtpengine_hash.h

41 lines
1.3 KiB

#ifndef _RTPENGINE_HASH_H
#define _RTPENGINE_HASH_H
#include "../../str.h"
#include "../../locking.h"
/* table entry */
struct rtpengine_hash_entry {
str callid; // call callid
str viabranch; // call viabranch
struct rtpp_node *node; // call selected node
unsigned int tout; // call timeout
struct rtpengine_hash_entry *next; // call next
};
/* table */
struct rtpengine_hash_table {
struct rtpengine_hash_entry **row_entry_list; // vector of size pointers to entry
gen_lock_t **row_locks; // vector of size pointers to locks
unsigned int *row_totals; // vector of size numbers of entries in the hashtable rows
unsigned int size; // hash table size
};
int rtpengine_hash_table_init(int size);
int rtpengine_hash_table_destroy();
int rtpengine_hash_table_insert(str callid, str viabranch, struct rtpengine_hash_entry *value);
int rtpengine_hash_table_remove(str callid, str viabranch, enum rtpe_operation);
struct rtpp_node *rtpengine_hash_table_lookup(str callid, str viabranch, enum rtpe_operation);
void rtpengine_hash_table_print();
unsigned int rtpengine_hash_table_total();
void rtpengine_hash_table_free_entry(struct rtpengine_hash_entry *entry);
void rtpengine_hash_table_free_row_entry_list(struct rtpengine_hash_entry *row_entry_list);
int rtpengine_hash_table_sanity_checks();
#endif