Files
Snowflakey/dist/lib/Snowflake/Master.js
2019-08-05 19:26:05 +02:00

39 lines
1.2 KiB
JavaScript

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const events_1 = require("events");
class SnowflakeMaster extends events_1.EventEmitter {
constructor() {
super();
this.setMaxListeners(1000);
this.workers = [];
}
addWorkers(...workers) {
for (const worker of workers)
this.workers.push(worker);
return this.refresh();
}
listWorkers() {
return this.workers;
}
removeWorkers(...identities) {
let found = 0;
for (const identity of identities) {
for (let i in this.workers) {
const worker = this.workers[i];
if (worker.options.name === identity || worker.options.workerId === identity) {
found++;
this.workers.splice(parseInt(i), 1);
}
}
}
return { removed: found };
}
refresh() {
for (let worker of this.workers) {
worker.on('newSnowflake', (...args) => this.emit('newSnowflake', ...args));
worker.on('deconstructedFlake', (...args) => this.emit('deconstructedFlake', ...args));
}
}
}
exports.default = SnowflakeMaster;