summary |
shortlog |
log |
commit | commitdiff |
tree
raw |
patch |
inline | side by side (from parent 1:
280c2a7)
Co-authored-by: Jérôme Benoit <jerome.benoit@sap.com>
on(event: 'error', handler: ErrorHandler<this>): void
on(event: 'online', handler: OnlineHandler<this>): void
on(event: 'exit', handler: ExitHandler<this>): void
on(event: 'error', handler: ErrorHandler<this>): void
on(event: 'online', handler: OnlineHandler<this>): void
on(event: 'exit', handler: ExitHandler<this>): void
+ once(event: 'exit', handler: ExitHandler<this>): void
}
public async destroy (): Promise<void> {
}
public async destroy (): Promise<void> {
- for (const worker of this.workers) {
- await this.destroyWorker(worker)
- }
+ await Promise.all(this.workers.map(worker => this.destroyWorker(worker)))
worker.on('error', this.opts.errorHandler ?? (() => {}))
worker.on('online', this.opts.onlineHandler ?? (() => {}))
worker.on('error', this.opts.errorHandler ?? (() => {}))
worker.on('online', this.opts.onlineHandler ?? (() => {}))
- // TODO handle properly when a worker exit
worker.on('exit', this.opts.exitHandler ?? (() => {}))
worker.on('exit', this.opts.exitHandler ?? (() => {}))
+ worker.once('exit', () => this.removeWorker(worker))
this.workers.push(worker)
this.workers.push(worker)
if (message.kill) {
this.sendToWorker(worker, { kill: 1 })
void this.destroyWorker(worker)
if (message.kill) {
this.sendToWorker(worker, { kill: 1 })
void this.destroyWorker(worker)
- this.removeWorker(worker)
protected destroyWorker (worker: Worker): void {
worker.kill()
protected destroyWorker (worker: Worker): void {
worker.kill()
- // FIXME: The tests are currently failing, so these must be changed first
}
protected sendToWorker (worker: Worker, message: MessageValue<Data>): void {
}
protected sendToWorker (worker: Worker, message: MessageValue<Data>): void {
if (message.kill) {
this.sendToWorker(worker, { kill: 1 })
void this.destroyWorker(worker)
if (message.kill) {
this.sendToWorker(worker, { kill: 1 })
void this.destroyWorker(worker)
- this.removeWorker(worker)
worker: ThreadWorkerWithMessageChannel
): Promise<void> {
await worker.terminate()
worker: ThreadWorkerWithMessageChannel
): Promise<void> {
await worker.terminate()
- // FIXME: The tests are currently failing, so these must be changed first
}
protected sendToWorker (
}
protected sendToWorker (
await new Promise(resolve => setTimeout(resolve, 200))
expect(closedWorkers).toBe(numberOfWorkers)
})
await new Promise(resolve => setTimeout(resolve, 200))
expect(closedWorkers).toBe(numberOfWorkers)
})