nsyslog
Version:
Modular new generation log agent. Reads, transform, aggregate, correlate and send logs from sources to destinations
42 lines (37 loc) • 1.09 kB
JavaScript
const
acker = require('../acker'),
jsexpr = require('jsexpr'),
Transporter = require("./");
class AckerTransporter extends Transporter {
constructor(id,type) {
super(id,type);
}
async configure(config, callback) {
this.config = config;
config.acks = config.acks || {};
try {
this.ack = Object.keys(config.ack).map((key)=>{
let format = config.ack[key];
let expr = jsexpr.expr(format);
return {key, expr};
});
callback();
}catch(err) {
callback(err);
}
}
async transport(entry, callback) {
try {
let all = this.ack.map(kv=>{
let val = kv.expr(entry);
if(val==null || val==undefined) return;
else return acker.ack(kv.key, entry, val);
});
await Promise.all(all);
callback(null,entry);
}catch(err) {
callback(err);
}
}
}
module.exports = AckerTransporter;