* Trigger all expired timer tasks * @return {long long} Returns timestamp of the next timer task to be * triggered. Returns -1 * indicates there are no timer tasks */
| 162 | * indicates there are no timer tasks |
| 163 | */ |
| 164 | long long trigger() { |
| 165 | long long key = get_curr_stamp(); |
| 166 | std::vector<trigger_item<T>*> items; |
| 167 | trigger_iter_t iter; |
| 168 | for (iter = items_.begin(); iter != items_.end();) { |
| 169 | if (iter->first > key) { |
| 170 | break; |
| 171 | } |
| 172 | |
| 173 | items.push_back(iter->second); |
| 174 | items_.erase(iter++); |
| 175 | } |
| 176 | |
| 177 | for (typename std::vector<trigger_item<T>*>::iterator |
| 178 | it = items.begin(); it != items.end(); ++it) { |
| 179 | |
| 180 | trigger(*it); |
| 181 | delete *it; |
| 182 | } |
| 183 | |
| 184 | iter = items_.begin(); |
| 185 | if (iter == items_.end()) { |
| 186 | return -1; |
| 187 | } |
| 188 | return iter->first; |
| 189 | } |
| 190 | |
| 191 | private: |
| 192 | trigger_items_t items_; |
no test coverage detected