round robin messags across the list.
*/
typedef struct {
+ uint64_t key; // key used to reinsert this entry into a new symtab
+ int refs; // number of symtabs which reference the entry
int mtype; // the message type for this list
int nrrgroups; // number of rr groups to send to
rrgroup_t** rrgroups; // one or more set of endpoints to round robin messages to
*/
typedef struct {
void* hash; // hash table.
+ int updates; // counter of update records received
} route_table_t;
/*
// ----- route table generic static things ---------
+static inline uint64_t build_rt_key( int32_t sub_id, int32_t mtype );
static void collect_things( void* st, void* entry, char const* name, void* thing, void* vthing_list );
static void del_rte( void* st, void* entry, char const* name, void* thing, void* data );
static char* uta_fib( char* fname );
static route_table_t* uta_rt_init( );
static route_table_t* uta_rt_clone( route_table_t* srt );
+static route_table_t* uta_rt_clone_all( route_table_t* srt );
static void uta_rt_drop( route_table_t* rt );
static endpoint_t* uta_add_ep( route_table_t* rt, rtable_ent_t* rte, char* ep_name, int group );
-static rtable_ent_t* uta_add_rte( route_table_t* rt, int mtype, int nrrgroups );
+static rtable_ent_t* uta_add_rte( route_table_t* rt, uint64_t key, int nrrgroups );
static endpoint_t* uta_get_ep( route_table_t* rt, char const* ep_name );
static void read_static_rt( uta_ctx_t* ctx, int vlevel );
static void parse_rt_rec( uta_ctx_t* ctx, char* buf, int vlevel );