arrow-fx-coroutines / arrow.fx.coroutines.stream / StepLeg

StepLeg

class StepLeg<O>

When merging multiple streams, this represents step of one leg.

It is common to uncons, however unlike uncons, it keeps track of stream scope independently of the main scope of the stream.

This assures, that after each next stepLeg each Stream leg keeps its scope when interpreting.

Usual scenarios is to first invoke stream.pull.stepLeg and then consume whatever is available in leg.head. If the next step is required leg.stepLeg will yield next Leg.

Once the stream will stop to be interleaved (merged), then stream allows to return to normal stream invocation.

Properties

head val head: Chunk<O>

Functions

pull Converts this leg back to regular pull. Scope is updated to the scope associated with this leg. Note that when this is invoked, no more interleaving legs are allowed, and this must be very last leg remaining.fun pull(): Pull<O, Unit>
setHead Replaces head of this leg. Useful when the head was not fully consumed.fun setHead(nextHead: Chunk<O>): StepLeg<O>
stepLeg Provides an uncons-like operation on this leg of the stream.fun stepLeg(): Pull<Nothing, StepLeg<O>?>
stream Converts this leg back to regular stream. Scope is updated to the scope associated with this leg. Note that when this is invoked, no more interleaving legs are allowed, and this must be very last leg remaining.fun stream(): Stream<O>

Do you like Arrow?

Arrow Org
<