arrow-fx-coroutines / arrow.fx.coroutines.stream / 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.
head | val head: Chunk <O> |
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?
✖