globalcache
Advanced tools
Comparing version 2.6.0 to 2.7.0
72
index.js
@@ -39,28 +39,2 @@ var util = require('util'), | ||
var callbacks = {}, | ||
messageQueue = [], | ||
_currentRequestID = 0; | ||
var _addToCallbacks = function (done, predefinedId, debug) { | ||
var id; | ||
if (!predefinedId) { | ||
debug && console.log('node-itach :: generating new id for IR transmittion'); | ||
debug && console.log('node-itach :: currently callbacks hash contains %d', Object.keys(callbacks).length); | ||
_currentRequestID++; | ||
id = _currentRequestID; | ||
} | ||
else | ||
id = predefinedId; | ||
callbacks[id] = done; | ||
return id; | ||
}, | ||
_resolveCallback = function (id, err, debug) { | ||
if (callbacks[id]) { | ||
debug && console.log('node-itach :: status:%s resolving callback with id %s', err ? 'error' : 'success', id); | ||
callbacks[id](err || false); | ||
delete callbacks[id]; | ||
} else { | ||
console.error('node-itach :: cannot find callback with id %s in callbacks hash', id); | ||
} | ||
}; | ||
function iTach(config) { | ||
@@ -79,3 +53,31 @@ config = _.extend({ | ||
var debug = config.debug; | ||
var sendTimeout = null; | ||
var callbacks = {}, | ||
messageQueue = [], | ||
_currentRequestID = 0; | ||
var _addToCallbacks = function (done, predefinedId, debug) { | ||
var id; | ||
if (!predefinedId) { | ||
debug && console.log('node-itach :: generating new id for IR transmittion'); | ||
debug && console.log('node-itach :: currently callbacks hash contains %d', Object.keys(callbacks).length); | ||
_currentRequestID++; | ||
id = _currentRequestID; | ||
} | ||
else | ||
id = predefinedId; | ||
callbacks[id] = done; | ||
return id; | ||
}, | ||
_resolveCallback = function (id, err, debug) { | ||
if (callbacks[id]) { | ||
debug && console.log('node-itach :: status:%s resolving callback with id %s', err ? 'error' : 'success', id); | ||
callbacks[id](err || false); | ||
delete callbacks[id]; | ||
clearSendTimeoutAndSendRightNow(); | ||
} else { | ||
console.error('node-itach :: cannot find callback with id %s in callbacks hash', id); | ||
} | ||
}; | ||
this.learn = function (done) { | ||
@@ -99,4 +101,12 @@ var options = { | ||
var _send = function () { | ||
function clearSendTimeoutAndSendRightNow() { | ||
if (sendTimeout) { | ||
clearTimeout(sendTimeout); | ||
sendTimeout = null; | ||
} | ||
send_(); | ||
} | ||
function send_() { | ||
if (!messageQueue.length) { | ||
@@ -131,3 +141,2 @@ debug && console.log('Message queue is empty. returning...') | ||
console.error('node-itach :: error :: ', err); | ||
done(err); | ||
socket.destroy(); | ||
@@ -139,3 +148,2 @@ self.emit('error', err); | ||
console.error('node-itach :: error :: ', 'Timeout'); | ||
done('Timeout'); | ||
socket.destroy(); | ||
@@ -180,5 +188,5 @@ self.emit('error', 'Timeout'); | ||
debug && console.log('Delay before going to another item in a queue...'); | ||
// for some reason my samsung tv needs this timeout. | ||
//TODO: test with different equipment, do we really need DELAY_BETWEEN_COMMANDS? | ||
setTimeout(function () { | ||
_send(); | ||
send_(); | ||
}, DELAY_BETWEEN_COMMANDS); | ||
@@ -243,3 +251,3 @@ } | ||
if (!isSending) { | ||
_send(); | ||
send_(); | ||
} | ||
@@ -246,0 +254,0 @@ } |
@@ -43,3 +43,3 @@ { | ||
}, | ||
"version": "2.6.0" | ||
"version": "2.7.0" | ||
} |
18829
296