//
//  GODTimer.h
//  Grand Object Dispatch
//
//  Created by Martin Kiss on 10.7.13.
//  Copyright (c) 2013 Martin Kiss. All rights reserved.
//

#import "GODSource.h"

typedef void(^GODTimerHandler)(NSUInteger fireCount);


/// Convenience wrapper for creating dispatch sources of type `timer'.
@interface GODTimer : GODSource



#pragma mark Creating Timer

/// Creates a new configured timer Source.
- (instancetype)initWithDate:(NSDate *)date interval:(NSTimeInterval)interval leeway:(NSTimeInterval)leeway queue:(GODQueue *)queue handler:(GODTimerHandler)block;

/// Returns started timer Source with given arguments.
+ (instancetype)startedTimerWithInterval:(NSTimeInterval)interval queue:(GODQueue *)queue handler:(GODTimerHandler)block;
+ (instancetype)startedTimerWithInterval:(NSTimeInterval)interval leeway:(NSTimeInterval)leeway queue:(GODQueue *)queue handler:(GODTimerHandler)block;
+ (instancetype)startedTimerWithDate:(NSDate *)date interval:(NSTimeInterval)interval leeway:(NSTimeInterval)leeway queue:(GODQueue *)queue handler:(GODTimerHandler)block;


#pragma mark Handling Timer

/// Sets the event handler block for the given dispatch source. Sends the number of times the timer has fired since the last handler invocation.
- (void)setEventTimerHandler:(GODTimerHandler)block;



@end