void hash_del(hash_table *table,uint64_t key){ lnodeptr node = hash_find_node(table,key); if(node != NULL){ linklist_remove(node); if(node->data!=NULL) { free(node->data); } node->data=NULL; lnode_free(node); } return; }
/* * === FUNCTION ====================================================================== * Name: delay_table_send * Description: send delayed message according key * ===================================================================================== */ void delay_table_send(uint64_t key,int fd){ linklist *msg_list=NULL; struct receiver_msg_st *msg=NULL; lnodeptr first=NULL; delay_table_delete_obsolete(key); msg_list =(linklist *)hash_find(table,key); if(NULL == msg_list){ return; } while(! linklist_is_empty(msg_list)){ first = linklist_pop_first(msg_list); msg = (first->data); (void)msg_receiver_send(fd,msg); if(msg != NULL) { free(msg); } fCount++; lnode_free(first); } }