@bazilio-san/af-stream
Version:
Data stream from database table
41 lines (33 loc) • 1.24 kB
text/typescript
import AbstractSender from './AbstractSender';
import { IRecordsComposite, ISenderConstructorOptions, TEventRecord } from '../interfaces';
class CallbackSender extends AbstractSender {
public eventCallback: Function;
constructor (options: ISenderConstructorOptions) {
super(options);
const { eventCallback } = options.senderConfig;
if (typeof eventCallback !== 'function') {
options.exitOnError(`Missing event callback function when instantiating CallbackSender class`);
}
this.eventCallback = eventCallback as Function;
}
async connect () {
this.options.echo.info(`=================== Callback Sender is Ready ===================`);
return true;
}
async sendEvents (recordsComposite: IRecordsComposite): Promise<boolean> {
const { eventsPacket } = recordsComposite;
if (!eventsPacket.length) {
return false;
}
const packet = eventsPacket.splice(0, eventsPacket.length);
const pl = packet.length;
recordsComposite.sentBufferLength = pl;
recordsComposite.sendCount = pl;
recordsComposite.last = packet[pl - 1];
packet.forEach((row: TEventRecord) => {
this.eventCallback(row);
});
return true;
}
}
export default CallbackSender;