[apps/tidep0084.git] / example / iot-gateway / node_modules / aws-iot-device-sdk / node_modules / mqtt / node_modules / reinterval / index.js
1 'use strict'
3 function ReInterval (callback, interval, args) {
4 var self = this;
6 this._callback = callback;
7 this._args = args;
9 this._interval = setInterval(callback, interval, this._args);
11 this.reschedule = function (interval) {
12 // if no interval entered, use the interval passed in on creation
13 if (!interval)
14 interval = self._interval;
16 if (self._interval)
17 clearInterval(self._interval);
18 self._interval = setInterval(self._callback, interval, self._args);
19 };
21 this.clear = function () {
22 if (self._interval) {
23 clearInterval(self._interval);
24 self._interval = undefined;
25 }
26 };
28 this.destroy = function () {
29 if (self._interval) {
30 clearInterval(self._interval);
31 }
32 self._callback = undefined;
33 self._interval = undefined;
34 self._args = undefined;
35 };
36 }
38 function reInterval () {
39 if (typeof arguments[0] !== 'function')
40 throw new Error('callback needed');
41 if (typeof arguments[1] !== 'number')
42 throw new Error('interval needed');
44 var args;
46 if (arguments.length > 0) {
47 args = new Array(arguments.length - 2);
49 for (var i = 0; i < args.length; i++) {
50 args[i] = arguments[i + 2];
51 }
52 }
54 return new ReInterval(arguments[0], arguments[1], args);
55 }
57 module.exports = reInterval;