int swTimer_del(swTimer *timer, swTimer_node *tnode) { if (tnode->remove) { return SW_FALSE; } if (SwooleG.timer._current_id > 0 && tnode->id == SwooleG.timer._current_id) { tnode->remove = 1; return SW_TRUE; } if (swHashMap_del_int(timer->map, tnode->id) < 0) { return SW_ERR; } //remove from min-heap swHeap_remove(timer->heap, tnode->heap_node); if (tnode->heap_node) { sw_free(tnode->heap_node); } sw_free(tnode); timer->num --; return SW_TRUE; }
void swTimer_del(swTimer *timer, swTimer_node *tnode) { swHeap_remove(timer->heap, tnode->heap_node); if (tnode->heap_node) { sw_free(tnode->heap_node); } sw_free(tnode); }