• Jump To … +
    chaperon.js colleague.bin.js colleague.js http.js ipc.js listener.js middleware.js network.js ua.js
  • colleague.bin.js

  • ¶
    /*
    
        ___ usage ___ en_US ___
        compassion colleague child <child options>
    
        options:
    
            -C, --chaperon <address:port>
                address of the chaperon that has bootstrap status
    
            -c, --conduit <address:port>
                address of the conduit to use for network communication
    
            -I, --island <string>
                name of the island
    
            -i, --id <string>
                colleague id
    
            -p, --ping <integer>
                milliseconds between keep alive pings (defualt 250)
    
            -t, --timeout <integer>
                milliseconds before a participant is considered unreachable (defualt 1000)
    
            --help
                display help message
    
        ___ $ ___ en_US ___
    
            conduit is required:
                the `--conduit` argument is a required argument
            unknown argument:
                Unknown argument %s.
        ___ . ___
    
     */
    require('arguable')(module, require('cadence')(function (async, program) {
        program.helpIf(program.ultimate.help)
        program.required('conduit')
  • ¶

    TODO Assert that these are integers.

        program.validate(require('arguable/numeric'), 'timeout', 'ping')
    
        var logger = require('prolific.logger').createLogger('compassion.colleague')
    
        var Shuttle = require('prolific.shuttle')
    
        var Envoy = require('nascent.rendezvous/envoy')
    
        var Middleware = require('./middleware')
    
        var Kibitzer = require('kibitz')
    
        var shuttle = Shuttle.shuttle(program, logger)
    
        var url = require('url')
    
        var kibitzer = new Kibitzer({ id: program.ultimate.id })
    
        program.on('shutdown', shuttle.close.bind(shuttle))
    
        logger.info('started', { parameters: program.utlimate, argv: program.argv })
  • ¶

    program.on(‘shutdown’, colleague.shutdown.bind(colleague))

        var middleware = new Middleware(Date.now(), program.ultimate.island, kibitzer)
    
        var envoy = new Envoy(middleware.dispatcher.createWrappedDispatcher())
    
        program.on('shutdown', envoy.close.bind(envoy))
    
        var location = program.ultimate.conduit
        location = url.resolve(location + '/', program.ultimate.island)
        location = url.resolve(location + '/',  program.ultimate.id)
    
        envoy.connect(location, async())
    }))