function timelineAgent(id, proxyAddress) { // execute super constructor eve.Agent.call(this, id); this.proxyAddress = proxyAddress; this.eventTypes = {}; this.timelineEvents = []; this.timelineClient = undefined; this.inputClient = undefined; // extend the agent with RPC functionality this.rpc = this.loadModule('rpc', this.rpcFunctions, {timeout:2000}); // option 1 // connect to all transports provided by the system this.connect(eve.system.transports.getAll()); } // extend the eve.Agent prototype timelineAgent.prototype = Object.create(eve.Agent.prototype); timelineAgent.prototype.constructor = timelineAgent; timelineAgent.prototype.rpcFunctions = {}; timelineAgent.prototype.rpcFunctions.close = function() { sessionClosed(); }; timelineAgent.prototype.connectToProxy = function() { this.rpc.request(this.proxyAddress, {method:'setTimelineClient',params:{}}).done(function () { connected = true; }); }; timelineAgent.prototype.rpcFunctions.addTimelineEvent = function(params,sender) { addToDataset(params); }; timelineAgent.prototype.rpcFunctions.resetTimelineEvents = function(params,sender) { clearDataset(); }; timelineAgent.prototype.wakeProxy = function(httpAddress) { this.rpc.request(httpAddress, {method:'wakeUp',params:{}}).done(); }; timelineAgent.prototype.getTimelineEvents = function (params, sender) { var me = this; return new Promise(function(resolve,reject) { me.rpc.request(me.proxyAddress, {method: 'getTimelineEvents', params: {}}) .then(function (reply) { resolve(reply); }) .catch(function(err) {reject(err);}); }) };