const { listen } = require('../ws/db'); const channels = require('../lib/db/channels'); const handlers = require('./handlers').init(); const { ERROR, INFO, DEBUG } = require('DOUGAL_ROOT/debug')(__filename); function start () { listen(channels, async function (data) { DEBUG("Incoming data", data); for (const handler of handlers) { // NOTE: We are intentionally passing the same instance // of the data to every handler. This means that earlier // handlers could, in principle, modify the data to be // consumed by latter ones, provided that they are // synchronous (as otherwise, the completion order is // undefined). await handler.run(data); } }); INFO("Events manager started.", handlers.length, "active handlers"); } module.exports = { start } if (require.main === module) { start(); }