tart-host
Version:
Tart core scheduling
88 lines (61 loc) • 2.26 kB
Markdown
tart-host
=========
Actor-based core scheduling for guest configurations
## Usage
To run the below example run:
npm run readme
```javascript
"use strict";
var host = require('../index.js');
var core = require('tart');
var tart = require('tart-stepping');
var coreSponsor = core.minimal();
var configA = tart.stepping();
var configB = tart.stepping();
var configC = tart.stepping();
var eventLoopA = coreSponsor(host.adapter(configA, configA.eventLoop));
var eventLoopB = coreSponsor(host.adapter(configB, configB.eventLoop));
var eventLoopC = coreSponsor(host.adapter(configC, configC.eventLoop));
var scheduler = coreSponsor(host.eventLoopRing([
{ eventLoop:eventLoopA, options:{ count:1 } },
{ eventLoop:eventLoopB },
{ eventLoop:eventLoopC, options:{ count:2 } }
]));
/*
Create an actor behavior that counts down to zero,
printing labelled messages to the console log.
*/
var countdown = function countdown(label) {
return function countdownBeh(count) {
console.log(label, count);
if (--count > 0) {
this.self(count);
}
};
};
var countdownA = configA.sponsor(countdown('.O.|.|.'));
var countdownB = configB.sponsor(countdown('.|.O.|.'));
var countdownC = configC.sponsor(countdown('.|.|.O.'));
countdownA(2);
countdownB(3);
countdownC(5);
scheduler(); // start scheduler
```
## Tests
npm test
## Documentation
**Public API**
* [host.adapter(object, method)](#hostadapterobjectmethod)
* [host.dispatchRing(guests\[, errorLog\])](#hostdispatchRingguestserrorLog)
* [host.eventLoopRing(guests\[, errorLog\])](#hosteventLoopRingguestserrorLog)
### host.adapter(object, method)
Create an actor behavior that calls a synchronous object method
using `message.arguments` as the argument list
and sending the return value to `message.ok`.
If an exception is thrown, it is sent to `message.fail`.
### host.dispatchRing(guests\[, errorLog\])
Create an actor behavior that cycles through a list of guest configurations,
dispatching one event at a time until no events remain.
### host.eventLoopRing(guests\[, errorLog\])
Create an actor behavior that cycles through a list of guest configurations,
calling `eventLoop(options)` for each until all event queues are exhausted.