Introduce TimerCallback2.
This allows getting notified also if the timer has been stopped, so that it is guaranteed to be called, except if cancelWait is called. Necessary for fixing vibe-d/vibe-core#86
This commit is contained in:
parent
42f96060c9
commit
dbb8267540
3 changed files with 33 additions and 6 deletions
|
@ -564,7 +564,12 @@ interface EventDriverTimers {
|
|||
void stop(TimerID timer);
|
||||
bool isPending(TimerID timer);
|
||||
bool isPeriodic(TimerID timer);
|
||||
void wait(TimerID timer, TimerCallback callback);
|
||||
final void wait(TimerID timer, TimerCallback callback) {
|
||||
wait(timer, (tm, fired) {
|
||||
if (fired) callback(tm);
|
||||
});
|
||||
}
|
||||
void wait(TimerID timer, TimerCallback2 callback);
|
||||
void cancelWait(TimerID timer);
|
||||
|
||||
/** Increments the reference count of the given resource.
|
||||
|
@ -668,6 +673,7 @@ alias FileIOCallback = void delegate(FileFD, IOStatus, size_t);
|
|||
alias EventCallback = void delegate(EventID);
|
||||
alias SignalCallback = void delegate(SignalListenID, SignalStatus, int);
|
||||
alias TimerCallback = void delegate(TimerID);
|
||||
alias TimerCallback2 = void delegate(TimerID, bool fired);
|
||||
alias FileChangesCallback = void delegate(WatcherID, in ref FileChange change);
|
||||
@system alias DataInitializer = void function(void*) @nogc;
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue