final case class Repeat[-I, +O, +E](alterand: Stage[I, O, E]) extends Decorator[I, O, E] with Product with Serializable
A decorator that keeps re-applying the inner stage (following the continuations its h8io.stages.Evolution selects
for h8io.stages.Status.Success) until the stage signals completion or an error.
The loop is implemented with @tailrec so it does not grow the stack. The loop continues as long as the inner stage
yields h8io.stages.Status.Success. It stops on h8io.stages.Status.Complete: if there are no errors the status is
converted back to Success; if there are errors, the Complete status is preserved.
In every branch the continuation of the inner stage is selected by the status the inner stage itself produced, and
never by the status Repeat reports to the enclosing pipeline — the two differ, since an error-free Complete is
absorbed into a Success. For the same reason the returned evolution is a h8io.stages.base.ConstEvolution: the
status the enclosing pipeline evolves Repeat with belongs to that pipeline, not to the inner stage, and must not
be passed inwards. Symmetrically, a skipped Repeat skips its inner stage and selects the inner continuation on the
neutral Status.Success. The returned ConstEvolution keeps the inner evolution's dispose as its own: per the
h8io.stages.Evolution contract, the inner evolution stays the terminal cleanup handle for the generation
constructed here until that generation runs.
Repeat is useful for driving stages like h8io.stages.std.Countdown that signal "batch complete" via
Status.Complete and should be repeated as a whole unit.
- I
the input type (contravariant)
- O
the output type (covariant)
- E
the error type (covariant)
- alterand
the inner stage to repeat
- Alphabetic
- By Inheritance
- Repeat
- Serializable
- Product
- Equals
- Alterator
- Stage
- Function1
- AnyRef
- Any
- Hide All
- Show All
- Public
- Protected
Value Members
- final def !=(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
- final def ##: Int
- Definition Classes
- AnyRef → Any
- final def ==(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
- val alterand: Stage[I, O, E]
The wrapped stage whose behavior is modified by this operator.
- def andThen[A](g: (Yield[I, O, E]) => A): (I) => A
- Definition Classes
- Function1
- Annotations
- @unspecialized()
- def apply(in: I): Yield[I, O, E]
Processes
inand returns the Yield carrying the optional output, the status and the continuation. - final def asInstanceOf[T0]: T0
- Definition Classes
- Any
- def clone(): AnyRef
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.CloneNotSupportedException]) @IntrinsicCandidate() @native()
- def compose[A](g: (A) => I): (A) => Yield[I, O, E]
- Definition Classes
- Function1
- Annotations
- @unspecialized()
- final def eq(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- final def getClass(): Class[_ <: AnyRef]
- Definition Classes
- AnyRef → Any
- Annotations
- @IntrinsicCandidate() @native()
- final def isInstanceOf[T0]: Boolean
- Definition Classes
- Any
- final def ne(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- final def notify(): Unit
- Definition Classes
- AnyRef
- Annotations
- @IntrinsicCandidate() @native()
- final def notifyAll(): Unit
- Definition Classes
- AnyRef
- Annotations
- @IntrinsicCandidate() @native()
- def productElementNames: Iterator[String]
- Definition Classes
- Product
- def skip(): Evolution[I, O, E]
Returns this stage's Evolution without consuming an input.
Returns this stage's Evolution without consuming an input.
Called instead of
applywhenever the stage takes part in a run but has nothing to process: the upstream yielded no output, or a binary operator excluded this branch. The evolution must be the one the stage would have returned had it run. Likeapply,skip()may perform side effects — a decorator, for instance, may advance or release the inner stage it owns. - final def synchronized[T0](arg0: => T0): T0
- Definition Classes
- AnyRef
- def toString(): String
- Definition Classes
- Function1 → AnyRef → Any
- final def wait(arg0: Long, arg1: Int): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
- final def wait(arg0: Long): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException]) @native()
- final def wait(): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
- final def ~>[_O, _E >: E](that: Stage[O, _O, _E]): Stage[I, _O, _E]
Composes this stage with
that, feeding this stage's output into it.Composes this stage with
that, feeding this stage's output into it. See the Composition section above for what happens when there is no output to feed.- Definition Classes
- Stage
- Annotations
- @inline()
Deprecated Value Members
- def finalize(): Unit
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.Throwable]) @Deprecated
- Deprecated
(Since version 9)