#import #import "Terminable.h" #import "CollapsingFutures.h" #import "Operation.h" @interface TimeUtil : NSObject +(NSTimeInterval) time; /// Result has type Future(TypeOfValueReturnedByFunction) +(TOCFuture*) scheduleEvaluate:(Function)function afterDelay:(NSTimeInterval)delay onRunLoop:(NSRunLoop*)runLoop unlessCancelled:(TOCCancelToken*)unlessCancelledToken; /// Result has type Future(TypeOfValueReturnedByFunction) +(TOCFuture*) scheduleEvaluate:(Function)function at:(NSDate*)date onRunLoop:(NSRunLoop*)runLoop unlessCancelled:(TOCCancelToken*)unlessCancelledToken; +(void) scheduleRun:(Action)action afterDelay:(NSTimeInterval)delay onRunLoop:(NSRunLoop*)runLoop unlessCancelled:(TOCCancelToken*)unlessCancelledToken; +(void) scheduleRun:(Action)action at:(NSDate*)date onRunLoop:(NSRunLoop*)runLoop unlessCancelled:(TOCCancelToken*)unlessCancelledToken; +(void) scheduleRun:(Action)action periodically:(NSTimeInterval)interval onRunLoop:(NSRunLoop*)runLoop untilCancelled:(TOCCancelToken*)untilCancelledToken andRunImmediately:(BOOL)shouldRunImmediately; @end