//
// 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);
    });
  }
};
Exemple #2
0
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){});
  });
Exemple #4
0
 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);
   }
 });