js-marketplace-2014/src/spy.js

39 lines
979 B
JavaScript

// Generic Spy
var Minimart = require("./minimart.js");
var World = Minimart.World;
var sub = Minimart.sub;
var pub = Minimart.pub;
var __ = Minimart.__;
function Spy(label, useJson, observationLevel) {
this.label = label || "SPY";
this.observationLevel = observationLevel || 10; // arbitrary. Should be Infinity. TODO
this.useJson = useJson;
}
Spy.prototype.boot = function () {
return [sub(__, 0, this.observationLevel), pub(__, 0, this.observationLevel)];
};
Spy.prototype.handleEvent = function (e) {
switch (e.type) {
case "routes":
console.log(this.label, "routes", e.gestalt.pretty());
break;
case "message":
var messageRepr;
try {
messageRepr = this.useJson ? JSON.stringify(e.message) : e.message;
} catch (exn) {
messageRepr = e.message;
}
console.log(this.label, "message", messageRepr, e.metaLevel, e.isFeedback);
break;
default:
console.log(this.label, "unknown", e);
break;
}
};
module.exports.Spy = Spy;