| 236 | // event timing |
| 237 | |
| 238 | void advanceToTime(SimTime targetTime) |
| 239 | { |
| 240 | AssertFatal(targetTime >= getCurrentTime(), |
| 241 | "Sim::advanceToTime() - Target time is less than the current time." ); |
| 242 | |
| 243 | Mutex::lockMutex(gEventQueueMutex); |
| 244 | |
| 245 | gTargetTime = targetTime; |
| 246 | while(gEventQueue && gEventQueue->time <= targetTime) |
| 247 | { |
| 248 | SimEvent *event = gEventQueue; |
| 249 | gEventQueue = gEventQueue->nextEvent; |
| 250 | AssertFatal(event->time >= gCurrentTime, |
| 251 | "Sim::advanceToTime() - Event time is less than current time."); |
| 252 | gCurrentTime = event->time; |
| 253 | SimObject *obj = event->destObject; |
| 254 | |
| 255 | if(!obj->isDeleted()) |
| 256 | event->process(obj); |
| 257 | delete event; |
| 258 | } |
| 259 | gCurrentTime = targetTime; |
| 260 | |
| 261 | Mutex::unlockMutex(gEventQueueMutex); |
| 262 | } |
| 263 | |
| 264 | void advanceTime(SimTime delta) |
| 265 | { |
no test coverage detected