UNPKG

1.4 kBJavaScriptView Raw
1var eve = require('../../index');
2
3/**
4 * CalcAgent can evaluate expressions
5 * @param {String} id
6 * @constructor
7 * @extend eve.Agent
8 */
9function CalcAgent(id) {
10 // execute super constructor
11 eve.Agent.call(this, id);
12
13 // extend the agent with support for requests
14 this.extend('request');
15
16 // connect to all transports provided by the system
17 this.connect(eve.system.transports.getAll());
18}
19
20// extend the eve.Agent prototype
21CalcAgent.prototype = Object.create(eve.Agent.prototype);
22CalcAgent.prototype.constructor = CalcAgent;
23
24/**
25 * Handle incoming messages.
26 * Expects messages to be an object with properties fn, a, and b.
27 * Available functions: 'add', 'subtract', 'multiply', 'divide'.
28 * @param {String} from
29 * @param {{fn: string, a: number, b: number, id: string}} message
30 */
31CalcAgent.prototype.receive = function(from, message) {
32 if (typeof message === 'object' && 'fn' in message && 'a' in message && 'b' in message) {
33 switch(message.fn) {
34 case 'add': return message.a + message.b;
35 case 'subtract': return message.a - message.b;
36 case 'multiply': return message.a * message.b;
37 case 'divide': return message.a / message.b;
38 default:
39 throw new Error('Unknown function "' + message.fn + '"');
40 }
41 }
42 else {
43 throw new Error('Object expected with properties fn, a, and b');
44 }
45};
46
47module.exports = CalcAgent;