コード例 #1
0
ファイル: qtimer.c プロジェクト: Zhouxiaoqing/qnode
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;
}
コード例 #2
0
ファイル: qtimer.c プロジェクト: DiaosiDev/qnode
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;
}