var syrup = require('stf-syrup') var Promise = require('bluebird') var logger = require('../../../util/logger') var wireutil = require('../../../wire/util') var srv = require('../../../util/srv') require('../../../util/lifecycle') var zmqutil = require('../../../util/zmqutil') module.exports = syrup.serial() .define(function(options) { var log = logger.createLogger('device:support:sub') // Input var sub = zmqutil.socket('sub') return Promise.map(options.endpoints.sub, function(endpoint) { return srv.resolve(endpoint).then(function(records) { return srv.attempt(records, function(record) { log.info('Receiving input from "%s"', record.url) sub.connect(record.url) return Promise.resolve(true) }) }) }) .then(function() { // Establish always-on channels [wireutil.global].forEach(function(channel) { log.info('Subscribing to permanent channel "%s"', channel) sub.subscribe(channel) }) }) .return(sub) })