happypack
Version:
webpack speed booster, makes you happy!
38 lines (29 loc) • 608 B
JavaScript
var processSend = require('./processSend')
var BufferedFd = exports
BufferedFd.of = function(fd) {
return {
descriptor: fd,
queue: [],
}
}
BufferedFd.send = function(fd, message, callback) {
fd.queue.push([ message, callback ]);
if (fd.queue.length === 1) {
deliver(fd)
}
}
BufferedFd.discard = function(fd) {
fd.queue.splice(0)
}
function deliver(fd) {
var item = fd.queue[0]
processSend(fd.descriptor, item[0], function(err) {
fd.queue.shift()
item[1](err)
process.nextTick(function() {
if (fd.queue.length) {
deliver(fd)
}
})
})
}