• Jump To … +
    descend.js indexify.js listen.bin.js listener.js map.js mock.js mock2.js monitor.js olio.bin.js olio.js prolific.configure.js run.bin.js runner.js search.js serve.bin.js serve.child.js server.js
  • mock2.js

  • ¶
    var http = require('http')
    var Destructible = require('destructible')
    var cadence = require('cadence')
    var Signal = require('signal')
    var util = require('util')
    var events = require('events')
    var Descendent = require('descendent')
    
    function Mock (ee) {
        this._descendent = new Descendent(ee)
        this._destructible = new Destructible(5000, 'olio/mock')
        this.ready = new Signal
    }
    
    Mock.prototype.initialize = function (argv, index) {
        this._descendent.across('olio:message', {
            method: 'factory'
        }, this)
        this._descendent.across('olio:message', {
            method: 'initialize',
            argv: argv,
            index: index
        })
    }
    
    Mock.prototype.sender = function (argv, index, sender) {
        this._descendent.across('olio:message', {
            method: 'connect',
            from: { argv: argv, index: index }
        }, sender)
        return sender
    }
    
    Mock.prototype.sibling = function (argv, count, factory) {
        this._descendent.across('olio:message', {
            method: 'created',
            argv: argv,
            count: count
        }, factory)
    }
    
    Mock.prototype.createReceiver = cadence(function (async, olio, message, sender) {
        var receiver = olio._receiver.call(null, message.from.argv, message.from.index)
    
        var destructible = new Destructible([ 'receiver', message.from  ])
        olio._destructible.addDestructor([ 'receiver', message.from ], destructible, 'destroy')
    
        sender.read.shifter().pump(receiver.write, 'enqueue')
        receiver.read.shifter().pump(sender.write, 'enqueue')
        var receiver = olio._receiver.call(null, message.from.argv, message.from.index)
    })
    
    Mock.prototype.createSender = cadence(function (async, olio, sender, message, factory, index) {
        var sink = factory(index, sender.count)
        var source = sender.builder.call(null, message.argv, index, message.count)
        sink.read.shifter().pump(source.write, 'enqueue')
        source.read.shifter().pump(sink.write, 'enqueue')
        sender.receivers[index] = { receiver: source }
        var wait = async()
        olio._destructible.addDestructor([ 'conduit', message.argv, index ], function () {
            wait()
        })
    })
    
    module.exports = Mock