int qtimer_del(qengine_t *engine, qid_t id) { qtimer_t *timer; qtimer_manager_t *mng; mng = &engine->timer_mng; timer = (qtimer_t*)mng->id_map.data[id]; if (timer->destroy) { timer->destroy(timer->data); } qminheap_erase(&(mng->min_heap), timer->heap_index); qid_detach(&(mng->id_map), id); qfreelist_free(&mng->free_list, timer); return 0; }
int qtimer_del(qengine_t *engine, qid_t id) { qtimer_t *timer; qtimer_manager_t *mng; mng = &engine->timer_mng; timer = (qtimer_t*)mng->id_map.data[id]; if (timer == NULL) { return -1; } if (timer->destroy) { timer->destroy(timer->data); } qrbtree_delete(&(mng->rbtree), &(timer->node)); qid_detach(&(mng->id_map), id); qfreelist_free(&mng->free_list, timer); return 0; }