1 #include "fwp_contract_table.h"
4 GAVL_CUST_NODE_INT_DEC(_fwp_contract_table, fwp_contract_table_t,
5 fwp_contract_data_t, fwp_contract_id_t, 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, fwp_contract_id_t, contract_tree,
10 tree_node, id, gavl_cmp_int);
12 void fwp_contract_table_init(struct fwp_contract_table *tbl)
15 _fwp_contract_table_init_root_field(tbl);
16 pthread_mutex_init(&tbl->lock, NULL); /* fast mutex */
17 tbl->nr_contracts = 0;
20 int fwp_contract_table_insert(fwp_contract_table_t *tbl,
21 fwp_contract_data_t *contdata)
23 unsigned int id = tbl->id_counter++;
25 pthread_mutex_lock(&tbl->lock);
26 contdata->vres_params.id = id;
27 _fwp_contract_table_insert(tbl, contdata);
29 pthread_mutex_unlock(&tbl->lock);
34 fwp_contract_data_t* fwp_contract_table_find(fwp_contract_table_t *tbl,
37 return _fwp_contract_table_find(tbl, &id);
40 int fwp_contract_table_delete(fwp_contract_table_t *tbl,
41 fwp_contract_data_t *contdata)
45 pthread_mutex_lock(&tbl->lock);
46 rv = _fwp_contract_table_delete(tbl, contdata);
48 pthread_mutex_unlock(&tbl->lock);
54 fwp_contract_table_foreach_begin(fwp_contract_table_t *tbl)
56 pthread_mutex_lock(&tbl->lock);
57 return _fwp_contract_table_first(tbl);
61 fwp_contract_table_foreach_next(fwp_contract_table_t *tbl,
62 fwp_contract_data_t *current)
64 return _fwp_contract_table_next(tbl, current);
67 void fwp_contract_table_foreach_end(fwp_contract_table_t *tbl)
69 pthread_mutex_unlock(&tbl->lock);