@awesome-ecs/workers
Version:
The Workers package for Awesome ECS. Provides basic implementation for the Worker communication using ECS.
45 lines (44 loc) • 1.34 kB
JavaScript
import "../chunk-TVAABFYA.js";
import "../chunk-HGXB5X2K.js";
// src/runtime/worker-runtime.ts
var WorkerSystemRuntime = class {
constructor(workerMessageQueue, entityRepository, logger) {
this.workerMessageQueue = workerMessageQueue;
this.entityRepository = entityRepository;
this.logger = logger;
}
runTick() {
const message = this.workerMessageQueue.peek();
if (!message) {
return;
}
const workers = this.entityRepository.getAll("worker-thread" /* workerThread */);
if (!workers) {
this.logger.warn("No WorkerThreadEntity was registered for type: ", message.workerType);
return;
}
let availableWorker;
for (const worker of workers) {
if (worker.instance.status === 1 /* available */) {
availableWorker = worker;
break;
}
}
if (!availableWorker) {
this.logger.debug(
"No available worker found. Skipping current tick.",
message.workerType,
message.messageUid
);
return;
}
this.logger.debug("Sending message to Worker", availableWorker.identity.model.uid, message);
availableWorker.instance.worker.postMessage(message);
availableWorker.instance.status = 2 /* busy */;
this.workerMessageQueue.dequeue();
}
};
export {
WorkerSystemRuntime
};
//# sourceMappingURL=index.js.map