|  | @@ -0,0 +1,50 @@
 | 
	
		
			
				|  |  | +'use strict';
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +let utils;
 | 
	
		
			
				|  |  | +let tasks = {};
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +let testTask = (callback) => {
 | 
	
		
			
				|  |  | +	//Stuff
 | 
	
		
			
				|  |  | +	console.log("Starting task");
 | 
	
		
			
				|  |  | +	setTimeout(() => {
 | 
	
		
			
				|  |  | +		console.log("Callback");
 | 
	
		
			
				|  |  | +		callback();
 | 
	
		
			
				|  |  | +	}, 10000);
 | 
	
		
			
				|  |  | +};
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +module.exports = {
 | 
	
		
			
				|  |  | +	init: function(cb) {
 | 
	
		
			
				|  |  | +		utils = require('./utils');
 | 
	
		
			
				|  |  | +		this.createTask("testTask", testTask, 5000);
 | 
	
		
			
				|  |  | +		this.pauseTask("testTask");
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +		cb();
 | 
	
		
			
				|  |  | +	},
 | 
	
		
			
				|  |  | +	createTask: function(name, fn, timeout) {
 | 
	
		
			
				|  |  | +		tasks[name] = {
 | 
	
		
			
				|  |  | +			name,
 | 
	
		
			
				|  |  | +			fn,
 | 
	
		
			
				|  |  | +			timeout,
 | 
	
		
			
				|  |  | +			lastRan: 0,
 | 
	
		
			
				|  |  | +			timer: null
 | 
	
		
			
				|  |  | +		};
 | 
	
		
			
				|  |  | +		this.handleTask(tasks[name]);
 | 
	
		
			
				|  |  | +	},
 | 
	
		
			
				|  |  | +	pauseTask: (name) => {
 | 
	
		
			
				|  |  | +		tasks[name].timer.pause();
 | 
	
		
			
				|  |  | +	},
 | 
	
		
			
				|  |  | +	resumeTask: (name) => {
 | 
	
		
			
				|  |  | +		tasks[name].timer.resume();
 | 
	
		
			
				|  |  | +	},
 | 
	
		
			
				|  |  | +	handleTask: function(task) {
 | 
	
		
			
				|  |  | +		if (task.timer) task.timer.pause();
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +		task.fn(() => {
 | 
	
		
			
				|  |  | +			task.lastRan = Date.now();
 | 
	
		
			
				|  |  | +			task.timer = new utils.Timer(() => {
 | 
	
		
			
				|  |  | +				this.handleTask(task);
 | 
	
		
			
				|  |  | +			}, task.timeout, false);
 | 
	
		
			
				|  |  | +		});
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  | +};
 |