* Delete a task object. Internally calls o->get_key() method to get the key of * this task object * @pararm o {T*} Specified task object to be deleted * @return {int} >= 0 indicates remaining task objects, -1 indicates this task * object does not exist */
| 142 | * object does not exist |
| 143 | */ |
| 144 | int del(T* o) { |
| 145 | long long key = o->get_key(); |
| 146 | trigger_iter_t it = items_.find(key); |
| 147 | |
| 148 | if (it == items_.end()) { |
| 149 | return -1; |
| 150 | } |
| 151 | if (it->second->del(o) == 0) { |
| 152 | delete it->second; |
| 153 | items_.erase(it); |
| 154 | } |
| 155 | return (int) items_.size(); |
| 156 | } |
| 157 | |
| 158 | /** |
| 159 | * Trigger all expired timer tasks |