jsbin/lib/processors/socket.js
Remy Sharp f94b8e47ef Push processor messages to local port
And pennyworth will *pull* these messages and process them.
2014-07-11 15:48:32 +01:00

38 lines
1.1 KiB
JavaScript

'use strict';
var axon = require('axon');
var requester = axon.socket('req');
var RSVP = require('rsvp');
var config = require('../config');
var undefsafe = require('undefsafe');
if (!undefsafe(config, 'processor.address')) {
throw new Error('no processor address');
} else {
var connected = false;
requester.bind(config.processor.address);
requester.on('bind', function () {
connected = true;
console.log('processor pushing locally, expecting pennyworth to pull');
// not sure when the close event is called
}).on('close', function () {
connected = false;
console.log('processor connection stopped');
});
module.exports = function (language, data) {
data.language = language;
if (connected) {
return new RSVP.Promise(function (resolve, reject) {
requester.send(data, function (data) {
if (data.error) {
reject(data.error);
} else {
resolve(data.result);
}
});
});
} else {
return new RSVP.reject('Processor server unreachable');
}
};
}