const Eventual = require('../../lib/eventual'); const Benchmark = require('../../lib/utils/benchmark'); function makeid() { var text = ""; var possible = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"; for( var i=0; i < 5; i++ ) text += possible.charAt(Math.floor(Math.random() * possible.length)); return text; } var events = new Eventual(); var cevt= events.createContext(); var ctx2 = events.createContext(); function stressEvents() { // 1 million var ncount = 1000000; console.log("Adding",ncount,"events"); for(var i = 0;i { console.log("evt: " , evt); console.log("Args: " + a,b,c); }); } // Second context console.log("Adding events to second context"); for(var i = 0;i { }); }; } function pinger() { ctx2.on('c1:ping',() => { console.log("Pong from ctx2"); }); var pingbm = new Benchmark(); var pctx = events.createContext(); pctx .on('c1:ping',(e) => { console.log("Pong: " + pingbm.mark(), "Contexts:",events._events.ctx.length); }) var test = 0; setInterval(() => { pingbm.start(); console.log("Sending ping"); pctx.emit('c1:ping').done((e) => { console.log("executed"); }); if( test > 10) { // 10 second cevt.destroy(); ctx2.destroy(); } test++; },1000); } function sequential() { // Testing done var cc = events.createContext(); var cc2 = events.createContext(); cc.on('hello',(e) => { e.wait(); console.log("CC1 Hello will wait 1s"); setTimeout(() => { e.done() },1000); }); cc2.on('hello',(e) => { e.wait(); console.log("cc2 Hello"); setTimeout(() => { e.done(); },2000); }); console.log("Broadcasting hello"); cc.broadcast('hello').done(() => { console.log("Hello called"); }); } //stressEvents(); //pinger(); //sequential(); // // State changes var cc = events.createContext(); var cc2 = events.createContext(); //cc.emit('test'); //cc.state('test',1); // call this cc2.on('test:test2',() => { // Should be calling it self console.log("Ok2"); }); cc.on('test:test2:test3',() => { // Should be calling it self console.log("ok3"); }); cc.onMatch('test.*',() => { console.log("Event matched"); }); cc2.broadcast('test:test2:test3');