sazze/node-pm

View on GitHub
docs/main.js.html

Summary

Maintainability
Test Coverage
<!DOCTYPE html>

<html lang="en">
<head>
    <meta charset="utf-8">
    <title>node-pm Source: main.js</title>

    <!--[if lt IE 9]>
    <script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script>
    <![endif]-->
    <link type="text/css" rel="stylesheet" href="styles/sunlight.default.css">

    
    <link type="text/css" rel="stylesheet" href="styles/site.cerulean.css">
    
</head>

<body>
<div class="container-fluid">
    <div class="navbar navbar-fixed-top navbar-inverse">
        <div class="navbar-inner">
            <a class="brand" href="index.html">node-pm</a>
            <ul class="nav">
                
                <li class="dropdown">
                    <a href="modules.list.html" class="dropdown-toggle" data-toggle="dropdown">Modules<b
                        class="caret"></b></a>

                    <ul class="dropdown-menu ">
                        
                        <li>
                            <a href="module-clusterEvents.html">clusterEvents</a>
                        </li>
                        
                        <li>
                            <a href="module-Logger.html">Logger</a>
                        </li>
                        
                        <li>
                            <a href="module-main.html">main</a>
                        </li>
                        
                        <li>
                            <a href="module-master.html">master</a>
                        </li>
                        
                        <li>
                            <a href="module-processEvents.html">processEvents</a>
                        </li>
                        

                    </ul>
                </li>
                
                <li class="dropdown">
                    <a href="events.list.html" class="dropdown-toggle" data-toggle="dropdown">Events<b
                        class="caret"></b></a>

                    <ul class="dropdown-menu ">
                        
                        <li>
                            <a href="module-master.html#event:shutdown">shutdown</a>
                        </li>
                        

                    </ul>
                </li>
                
            </ul>
        </div>
    </div>

    <div class="row-fluid">

        
            <div class="span12">
                
                <div id="main">
                    


        <h1 class="page-title">Source: main.js</h1>
    
    <section>
        <article>
            <pre class="sunlight-highlight-javascript linenums">var Logger = require('./Logger');
var master;
var _ = require('underscore');

/**
 * @module
 * @author Kevin Smithson &lt;ksmithson@sazze.com>
 * @author Craig Thayer &lt;cthayer@sazze.com>
 *
 * @example
 * Usage: node-pm app.js
 */
module.exports = {
  /**
   * Start the Worker Manager
   *
   * @param [settings={}]
   * @return {module:lib/master}
   */
  start: function(settings) {
    "use strict";

    if (typeof settings === 'undefined') {
      settings = {};
    }

    parseOptions(settings);
    setupLogger();

    require('./Logger').verbose('Starting worker manager');

    // Start the Master
    master = require('./master');

    registerListeners(master);

    master.start();

    return master;
  },

  /**
   * Stop the worker Manager
   */
  stop: function(callback) {
    if (master) {
      master.stop(callback);
      master = null;
    }
  }
};

/**
 * Parse Options
 *
 * @private
 * @param options
 */
function parseOptions(options) {
  "use strict";

  var _ = require('underscore');
  var config = require('./config');

  _.extend(config, options);
}

/**
 * Setup Logger
 *
 * @private
 */
function setupLogger() {
  "use strict";
  var options = require('./config');

  if (options.v.length == 3) {
    Logger.level = Logger.levels.verbose;
  } else if (options.v.length == 2) {
    Logger.level = Logger.levels.debug;
  } else if (options.v.length == 1) {
    Logger.level = Logger.levels.info;
  } else if (options.s) {
    Logger.level = Logger.levels.noLog;
  }
}

function registerListeners(master) {
  master.on('start', eventHandler.bind(undefined, 'start'));
  master.on('stop', eventHandler.bind(undefined, 'stop'));
  master.on('restart', eventHandler.bind(undefined, 'restart'));
  master.on('shutdown', eventHandler.bind(undefined, 'shutdown'));
  master.on('forkLoop', eventHandler.bind(undefined, 'forkLoop'));
  master.cluster.on('fork', eventHandler.bind(undefined, 'cluster:fork'));
  master.cluster.on('online', eventHandler.bind(undefined, 'cluster:online'));
  master.cluster.on('listening', eventHandler.bind(undefined, 'cluster:listening'));
  master.cluster.on('disconnect', eventHandler.bind(undefined, 'cluster:disconnect'));
  master.cluster.on('exit', eventHandler.bind(undefined, 'cluster:exit'));
}

function eventHandler() {
  if (typeof process.send !== 'function') {
    return;
  }

  if (arguments.length &lt; 2) {
    Logger.verbose('called with wrong number of arguments');
    return;
  }

  try {
    var string = JSON.stringify(Array.prototype.slice.call(arguments, 0), function(key, value) {
      if (key.match(/^_/)) {
        //private key, don't encode
        return undefined;
      }

      return value;
    });
  } catch (e) {
    Logger.verbose(e);
    Logger.verbose(arguments);
    return;
  }

  process.send(string);
}</pre>
        </article>
    </section>





                </div>

                <div class="clearfix"></div>
                <footer>
                    
                    
        <span class="copyright">
        Sazze, Inc Copyright © 2012-2013
        </span>
                    <br />
                    
        <span class="jsdoc-message">
        Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.3.0-alpha9</a>
        on Thu Sep 11 2014 11:45:56 GMT-0700 (PDT) using the <a href="https://github.com/terryweiss/docstrap">DocStrap template</a>.
        </span>
                </footer>
            </div>

            
            <br clear="both">
        </div>

    </div>
    <script src="scripts/sunlight.js"></script>
    <script src="scripts/sunlight.javascript.js"></script>
    <script src="scripts/sunlight-plugin.doclinks.js"></script>
    <script src="scripts/sunlight-plugin.linenumbers.js"></script>
    <script src="scripts/sunlight-plugin.menu.js"></script>
    <script src="scripts/jquery.min.js"></script>
    <script src="scripts/jquery.scrollTo.js"></script>
    <script src="scripts/jquery.localScroll.js"></script>
    <script src="scripts/bootstrap-dropdown.js"></script>
    <script src="scripts/toc.js"></script>


    <script>  Sunlight.highlightAll({lineNumbers:true,  showMenu: true, enableDoclinks :true}); </script>

    <script>
        $( function () {
            $( "#toc" ).toc( {
                selectors   : "h1,h2,h3,h4",
                showAndHide : false,
                scrollTo    : 60
            } );
            $( "#toc>ul" ).addClass( "nav nav-pills nav-stacked" );
            $( "#main span[id^='toc']" ).addClass( "toc-shim" );

        } );
    </script>

    

</body>
</html>