#import #import "CollapsingFutures.h" #import "Operation.h" #import "Terminable.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