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

Function handleSide

packages/effect/src/internal/stream.ts:308–360  ·  view source on GitHub ↗
(
            leftovers: Chunk.Chunk<Chunk.Chunk<A | A2>>,
            b: B,
            c: Option.Option<C>
          )

Source from the content-addressed store, hash-verified

306 )
307 )
308 const handleSide = (
309 leftovers: Chunk.Chunk<Chunk.Chunk<A | A2>>,
310 b: B,
311 c: Option.Option<C>
312 ): Channel.Channel<Chunk.Chunk<Either.Either<B, C>>, unknown, E | E2, unknown, unknown, unknown, R2 | R3> =>
313 pipe(
314 Ref.set(sinkLeftovers, Chunk.flatten(leftovers)),
315 Effect.zipRight(
316 Effect.map(Ref.get(sinkEndReason), (reason) => {
317 switch (reason._tag) {
318 case SinkEndReason.OP_SCHEDULE_END: {
319 return pipe(
320 Effect.all([
321 Ref.get(consumed),
322 forkSink,
323 pipe(timeout(Option.some(b)), Effect.forkIn(scope))
324 ]),
325 Effect.map(([wasConsumed, sinkFiber, scheduleFiber]) => {
326 const toWrite = pipe(
327 c,
328 Option.match({
329 onNone: (): Chunk.Chunk<Either.Either<B, C>> => Chunk.of(Either.right(b)),
330 onSome: (c): Chunk.Chunk<Either.Either<B, C>> =>
331 Chunk.make(Either.right(b), Either.left(c))
332 })
333 )
334 if (wasConsumed) {
335 return pipe(
336 core.write(toWrite),
337 core.flatMap(() => scheduledAggregator(sinkFiber, scheduleFiber, scope))
338 )
339 }
340 return scheduledAggregator(sinkFiber, scheduleFiber, scope)
341 }),
342 channel.unwrap
343 )
344 }
345 case SinkEndReason.OP_UPSTREAM_END: {
346 return pipe(
347 Ref.get(consumed),
348 Effect.map((wasConsumed) =>
349 wasConsumed ?
350 core.write(Chunk.of<Either.Either<B, C>>(Either.right(b))) :
351 core.void
352 ),
353 channel.unwrap
354 )
355 }
356 }
357 })
358 ),
359 channel.unwrap
360 )
361 return channel.unwrap(
362 Effect.raceWith(Fiber.join(sinkFiber), Fiber.join(scheduleFiber), {
363 onSelfDone: (sinkExit, _) =>

Callers 1

scheduledAggregatorFunction · 0.70

Calls 9

timeoutFunction · 0.85
scheduledAggregatorFunction · 0.85
pipeFunction · 0.70
setMethod · 0.65
mapMethod · 0.65
getMethod · 0.65
ofMethod · 0.65
makeMethod · 0.65
writeMethod · 0.65

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…