* Add a task object * @pararm o {T*} */
| 120 | * @pararm o {T*} |
| 121 | */ |
| 122 | void add(T* o) { |
| 123 | int ttl = o->get_ttl(); |
| 124 | long long key = get_curr_stamp() + ttl; |
| 125 | |
| 126 | trigger_item<T>* item; |
| 127 | trigger_iter_t it = items_.find(key); |
| 128 | if (it == items_.end()) { |
| 129 | item = new trigger_item<T>(items_); |
| 130 | items_[key] = item; |
| 131 | } else |
| 132 | item = it->second; |
| 133 | item->add(o); |
| 134 | o->set_key(key); |
| 135 | } |
| 136 | |
| 137 | /** |
| 138 | * Delete a task object. Internally calls o->get_key() method to get the key of |