(self: Pool<A, E>)
| 543 | |
| 544 | const resize = <A, E>(self: Pool<A, E>): Effect.Effect<void> => |
| 545 | self.state.resizeSemaphore.withPermits(1)(resizeLoop(self)) |
| 546 | |
| 547 | const resizeLoop = <A, E>(self: Pool<A, E>): Effect.Effect<void> => |
| 548 | Effect.suspend(() => { |
| 549 | const active = activeSize(self) |
| 550 | const target = targetSize(self) |
| 551 | if (active >= target) { |
| 552 | return Effect.void |
| 553 | } |
| 554 | const toAcquire = target - active |
| 555 | return self.config.strategy.reclaim(self).pipe( |
| 556 | Effect.flatMap((item) => item ? Effect.succeed(item) : allocate(self)), |
| 557 | Effect.replicateEffect(toAcquire, { concurrency: toAcquire }), |
| 558 | Effect.tap(self.state.availableLatch.open), |
| 559 | Effect.flatMap((items) => items.some((_) => _.exit._tag === "Failure") ? Effect.void : resizeLoop(self)) |
| 560 | ) |
| 561 | }) |
| 562 |
no test coverage detected
searching dependent graphs…