@bazilio-san/af-stream
Version:
Data stream from database table
49 lines • 1.82 kB
JavaScript
import TCPJSONSender from './TCPJSONSender';
import WSSender from './WSSender';
import CallbackSender from './CallbackSender';
import ConsoleSender from './ConsoleSender';
import EmitterSender from './EmitterSender';
const sendersCache = {};
const accessPointTimeOutMillis = 10000;
const checkAccessPointAvailability = async (options) => {
var _a;
const accessPoint = options.senderConfig.accessPoint;
const exitOnError = options.exitOnError;
if (!(await ((_a = accessPoint === null || accessPoint === void 0 ? void 0 : accessPoint.waitForHostPortUpdated) === null || _a === void 0 ? void 0 : _a.call(accessPoint, 10000)))) {
exitOnError(`Access point "${accessPoint === null || accessPoint === void 0 ? void 0 : accessPoint.id}" update timed out ${accessPointTimeOutMillis} ms`);
}
};
const getSender = async (options) => {
const { streamId } = options.streamConfig;
let sender = sendersCache[streamId];
if (sender) {
return sender;
}
const { senderConfig } = options;
switch (senderConfig.type) {
case 'tcp': {
await checkAccessPointAvailability(options);
sender = new TCPJSONSender(options);
break;
}
case 'ws': {
await checkAccessPointAvailability(options);
sender = new WSSender(options);
break;
}
case 'callback': {
sender = new CallbackSender(options);
break;
}
case 'emitter': {
sender = new EmitterSender(options);
break;
}
default:
sender = new ConsoleSender(options);
}
sendersCache[streamId] = sender;
return sender;
};
export default getSender;
//# sourceMappingURL=get-sender.js.map