LocalSoftDeadline

h8io.stages.operators.LocalSoftDeadline
See theLocalSoftDeadline companion object
final case class LocalSoftDeadline[-I, +O, +E](tsSupplier: () => Long, now: () => Long, duration: Long, alterand: Stage[I, O, E]) extends Decorator[I, O, E]

A decorator that stops the pipeline when a time budget measured from the beginning of the current unit of work is exhausted.

Unlike h8io.stages.std.GlobalSoftDeadline, which measures time from the moment the stage is created and never resets, LocalSoftDeadline measures time from the apply call that started the current unit of work: the timestamp is captured at that call and preserved for as long as the evolution is invoked with h8io.stages.Status.Success. When the evolution is invoked with any other status, the clock is reset — the new window starts at the next apply call. The same reset happens after the deadline has been exceeded.

The deadline is ''soft'': it is checked after the inner stage has already been applied. If it is exceeded, a h8io.stages.Status.Success in the current h8io.stages.Yield is upgraded to an errorless h8io.stages.Status.Complete; any other status is left unchanged.

If duration ≤ 0 the factory methods return h8io.stages.std.DeadEnd directly, ensuring the pipeline immediately terminates.

Type parameters

E

the error type (covariant)

I

the input type (contravariant)

O

the output type (covariant)

Value parameters

alterand

the inner stage whose deadline is enforced

duration

the time budget in nanoseconds

now

a supplier of the current time in nanoseconds

tsSupplier

a thunk that returns the timestamp of the start of the current deadline window

Attributes

Companion
object
Graph
Supertypes
trait Serializable
trait Product
trait Equals
trait Alterator[Stage[I, O, E], I, O, E]
trait Stage[I, O, E]
trait I => Yield[I, O, E]
class Object
trait Matchable
class Any
Show all

Members list

Value members

Concrete methods

override def apply(in: I): Yield[I, O, E]

Processes in and returns the Yield carrying the optional output, the status and the continuation.

Processes in and returns the Yield carrying the optional output, the status and the continuation.

A stage that throws from here must have released its own resources first — see the ''Lifecycle'' section above.

Attributes

Definition Classes
Stage -> Function1
override 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 apply whenever 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. Like apply, skip() may perform side effects — a decorator, for instance, may advance or release the inner stage it owns.

Attributes

Definition Classes

Inherited methods

def andThen[A](g: Yield[I, O, E] => A): I => A

Composes two instances of Function1 in a new Function1, with this function applied first.

Composes two instances of Function1 in a new Function1, with this function applied first.

Type parameters

A

the result type of function g

Value parameters

g

a function R => A

Attributes

Returns

a new function f such that f(x) == g(apply(x))

Inherited from:
Function1
def compose[A](g: A => I): A => Yield[I, O, E]

Composes two instances of Function1 in a new Function1, with this function applied last.

Composes two instances of Function1 in a new Function1, with this function applied last.

Type parameters

A

the type to which function g can be applied

Value parameters

g

a function A => T1

Attributes

Returns

a new function f such that f(x) == apply(g(x))

Inherited from:
Function1
def productElementNames: Iterator[String]

An iterator over the names of all the elements of this product.

An iterator over the names of all the elements of this product.

Attributes

Inherited from:
Product
def productIterator: Iterator[Any]

An iterator over all the elements of this product.

An iterator over all the elements of this product.

Attributes

Returns

in the default implementation, an Iterator[Any]

Inherited from:
Product
override def toString(): String

Returns a string representation of the object.

Returns a string representation of the object.

The default representation is platform dependent.

Attributes

Returns

a string representation of the object.

Definition Classes
Function1 -> Any
Inherited from:
Function1
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. See the ''Composition'' section above for what happens when there is no output to feed.

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.

Attributes

Inherited from:
Stage