MCPcopy Index your code
hub / github.com/Effect-TS/effect / interpretToPull

Function interpretToPull

packages/effect/src/internal/channel.ts:2256–2286  ·  view source on GitHub ↗
(
  channelState: ChannelState.ChannelState<OutErr, Env>,
  exec: executor.ChannelExecutor<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>
)

Source from the content-addressed store, hash-verified

2254
2255/** @internal */
2256const interpretToPull = <Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>(
2257 channelState: ChannelState.ChannelState<OutErr, Env>,
2258 exec: executor.ChannelExecutor<OutElem, InElem, OutErr, InErr, OutDone, InDone, Env>
2259): Effect.Effect<Either.Either<OutElem, OutDone>, OutErr, Env> => {
2260 const state = channelState as ChannelState.Primitive
2261 switch (state._tag) {
2262 case ChannelStateOpCodes.OP_DONE: {
2263 return Exit.match(exec.getDone(), {
2264 onFailure: Effect.failCause,
2265 onSuccess: (done): Effect.Effect<Either.Either<OutElem, OutDone>, OutErr, Env> =>
2266 Effect.succeed(Either.left(done))
2267 })
2268 }
2269 case ChannelStateOpCodes.OP_EMIT: {
2270 return Effect.succeed(Either.right(exec.getEmit()))
2271 }
2272 case ChannelStateOpCodes.OP_FROM_EFFECT: {
2273 return pipe(
2274 state.effect as Effect.Effect<Either.Either<OutElem, OutDone>, OutErr, Env>,
2275 Effect.flatMap(() => interpretToPull(exec.run() as ChannelState.ChannelState<OutErr, Env>, exec))
2276 )
2277 }
2278 case ChannelStateOpCodes.OP_READ: {
2279 return executor.readUpstream(
2280 state,
2281 () => interpretToPull(exec.run() as ChannelState.ChannelState<OutErr, Env>, exec),
2282 (cause) => Effect.failCause(cause) as Effect.Effect<Either.Either<OutElem, OutDone>, OutErr, Env>
2283 )
2284 }
2285 }
2286}
2287
2288/** @internal */
2289export const toQueue = <Done, Err, Elem>(

Callers 1

channel.tsFile · 0.85

Calls 5

getDoneMethod · 0.80
getEmitMethod · 0.80
failCauseMethod · 0.80
pipeFunction · 0.70
runMethod · 0.45

Tested by

no test coverage detected