1 #include "fwp_contract_table.h"
4 GAVL_CUST_NODE_INT_DEC(_fwp_contract_table, fwp_contract_table_t,
5 fwp_contract_data_t, unsigned int, contract_tree,
6 tree_node, id, gavl_cmp_int);
8 GAVL_CUST_NODE_INT_IMP(_fwp_contract_table, fwp_contract_table_t,
9 fwp_contract_data_t, unsigned int, contract_tree,
10 tree_node, id, gavl_cmp_int);
12 fwp_contract_data_t* fwp_contract_data_new()
14 return memset(malloc(sizeof (fwp_contract_data_t)),'\0',
15 sizeof(fwp_contract_data_t));
18 void fwp_contract_table_init(struct fwp_contract_table *tbl)
21 _fwp_contract_table_init_root_field(tbl);
22 pthread_mutex_init(&tbl->lock, NULL); /* fast mutex */
23 tbl->nr_contracts = 0;
26 int fwp_contract_table_insert(fwp_contract_table_t *tbl,
27 fwp_contract_data_t *contdata)
29 unsigned int id = tbl->id_counter++;
31 pthread_mutex_lock(&tbl->lock);
32 contdata->vres_params.id = id;
33 _fwp_contract_table_insert(tbl, contdata);
35 pthread_mutex_unlock(&tbl->lock);
40 fwp_contract_data_t* fwp_contract_table_find(fwp_contract_table_t *tbl,
43 return _fwp_contract_table_find(tbl, &id);
46 int fwp_contract_table_delete(fwp_contract_table_t *tbl,
47 fwp_contract_data_t *contdata)
51 pthread_mutex_lock(&tbl->lock);
52 rv = _fwp_contract_table_delete(tbl, contdata);
54 pthread_mutex_unlock(&tbl->lock);