(encoded: Encoded)
| 134 | * @category layers |
| 135 | */ |
| 136 | export const makeEncoded = (encoded: Encoded) => |
| 137 | RunnerStorage.of({ |
| 138 | getRunners: Effect.gen(function*() { |
| 139 | const runners = yield* encoded.getRunners |
| 140 | const results: Array<[Runner, boolean]> = [] |
| 141 | for (let i = 0; i < runners.length; i++) { |
| 142 | const [runner, healthy] = runners[i] |
| 143 | try { |
| 144 | results.push([Runner.decodeSync(runner), healthy]) |
| 145 | } catch { |
| 146 | // |
| 147 | } |
| 148 | } |
| 149 | return results |
| 150 | }), |
| 151 | register: (runner, healthy) => |
| 152 | Effect.map( |
| 153 | encoded.register(encodeRunnerAddress(runner.address), Runner.encodeSync(runner), healthy), |
| 154 | MachineId.make |
| 155 | ), |
| 156 | unregister: (address) => encoded.unregister(encodeRunnerAddress(address)), |
| 157 | setRunnerHealth: (address, healthy) => encoded.setRunnerHealth(encodeRunnerAddress(address), healthy), |
| 158 | acquire: (address, shardIds) => { |
| 159 | const arr = Array.from(shardIds, (id) => id.toString()) |
| 160 | if (!isNonEmptyArray(arr)) return Effect.succeed([]) |
| 161 | return encoded.acquire(encodeRunnerAddress(address), arr).pipe( |
| 162 | Effect.map((shards) => shards.map(ShardId.fromString)) |
| 163 | ) |
| 164 | }, |
| 165 | refresh: (address, shardIds) => |
| 166 | encoded.refresh(encodeRunnerAddress(address), Array.from(shardIds, (id) => id.toString())).pipe( |
| 167 | Effect.map((shards) => shards.map(ShardId.fromString)) |
| 168 | ), |
| 169 | release(address, shardId) { |
| 170 | return encoded.release(encodeRunnerAddress(address), shardId.toString()) |
| 171 | }, |
| 172 | releaseAll(address) { |
| 173 | return encoded.releaseAll(encodeRunnerAddress(address)) |
| 174 | } |
| 175 | }) |
| 176 | |
| 177 | /** |
| 178 | * @since 1.0.0 |
no test coverage detected