// // Connects to a Big mesh to broadcast and listen for events // function connect (options, callback) { events(); // // Since the mesh is just now connecting, set all previous uplink nodes to disconnected // var uplinks = 0; resource.node.find({ status: 'connected' }, function(err, results) { if(results.length === 0) { return _connect(); } results.forEach(function(record) { record.status = "disconnected"; record.save(function() { uplinks++; if(uplinks === results.length) { _connect(); } }) }); }); function _connect () { var client = require('engine.io-client'); mesh.client = new client.Socket({ host: options.host, port: options.port }); mesh.client.on('error', function (err) { return callback(err); }); mesh.client.on('open', function(){ mesh.uplink(options, callback); }); } };
module['exports'] = function (options, callback) { var $ = this.$; resource.node.all(function(err, results){ $('.nodes').html(''); results.forEach(function(record){ var output; if(record.role === "server") { output = ('<tr>' + '<td><a href="/admin/resources/node/get/' + record.id +'">' + record.id + '</a></td>' + '<td>' + record.status + '</td>' + '<td>' + record.lastSeen + '</td>' + '</tr>'); $('.servers .nodes').append(output); } else if(record.status === "connected") { output = ('<tr>' + '<td><a href="/admin/resources/node/get/' + record.id +'">' + record.id + '</a></td>' + '<td>' + record.status + '</td>' + '<td>' + record.lastSeen + '</td>' + '</tr>'); $('.clients .nodes').append(output); } }); if($('.clients .nodes').length === 1) { $('.clients').remove() } callback(null, $.html()) }); }
socket.on('disconnect', function(data){ meshEmitter.removeListener(handler); resource.node.create({ id: socket.id, lastSeen: new Date().toString(), role: "client", status: "disconnected" }, function(err, node){}); });
git.on('exit', function (code) { result = result.split('\n'); console.log('GIT EXITING') console.log('-----------------'); if (result[0].search('t connect to host') !== -1 || result[0].search('error: Failed connect') !== -1) { resource.logger.error('git push failed!'); resource.logger.info('attempting to ssh into the machine to fix the problem...'); resource.node.sh({ host: options.host, recipe: "ubuntu-12.04" }, callback); } else { callback(null, options); } });