- Companion
- class
Type members
Classlikes
An abstraction for writing Pull
computations that can timeout
while reading from a Stream
.
An abstraction for writing Pull
computations that can timeout
while reading from a Stream
.
A Pull.Timed
is not created or intepreted directly, but by
calling Stream.ToPull.timed.
yourStream.pull.timed(tp => ...).stream
The argument to timed
is a Pull.Timed[F, O] => Pull[F, O2, R]
function, which describes the pulling logic and is often recursive,
with shape:
def go(timedPull: Pull.Timed[F, A]): Pull[F, B, Unit] =
timedPull.uncons.flatMap {
case Some((Right(chunk), next)) => doSomething >> go(next)
case Some((Left(_), next)) => doSomethingElse >> go(next)
case None => Pull.done
}
Where doSomething
and doSomethingElse
are Pull
computations
such as Pull.output
, in addition to Pull.Timed.timeout
.
See below for detailed descriptions of timeout
and uncons
, and
look at the Stream.ToPull.timed scaladoc for an example of usage.
Value members
Concrete methods
Creates a pull that evaluates the supplied effect fr
, emits no
outputs, and terminates with the result of the effect.
If the fr
effect fails with an error, the new pull fails with that error.
Creates a pull that evaluates the supplied effect fr
, emits no
outputs, and terminates with the result of the effect.
If the fr
effect fails with an error, the new pull fails with that error.
Extends the scope of the currently open resources to the specified stream,
preventing them from being finalized until after s
completes execution,
even if the returned pull is converted to a stream, compiled, and
evaluated before s
is compiled and evaluated.
Extends the scope of the currently open resources to the specified stream,
preventing them from being finalized until after s
completes execution,
even if the returned pull is converted to a stream, compiled, and
evaluated before s
is compiled and evaluated.
Lifts an Either[Throwable, A] to an effectful Pull[F, A, Unit].
Lifts an Either[Throwable, A] to an effectful Pull[F, A, Unit].
- Example
scala> import cats.effect.SyncIO, scala.util.Try scala> Pull.fromEither[SyncIO](Right(42)).stream.compile.toList.unsafeRunSync() res0: List[Int] = List(42) scala> Try(Pull.fromEither[SyncIO](Left(new RuntimeException)).stream.compile.toList.unsafeRunSync()) res1: Try[List[INothing]] = Failure(java.lang.RuntimeException)
Repeatedly uses the output of the pull as input for the next step of the
pull. Halts when a step terminates with None
or Pull.raiseError
.
Repeatedly uses the output of the pull as input for the next step of the
pull. Halts when a step terminates with None
or Pull.raiseError
.
Creates a pull that emits the elements of the given chunk. The new pull performs no effects and terminates successfully with a unit result.
Creates a pull that emits the elements of the given chunk. The new pull performs no effects and terminates successfully with a unit result.
Lifts the given output value O
into a pull that performs no
effects, emits that single output in a singleton chunk, and always
terminates successfully with a unit result.
Lifts the given output value O
into a pull that performs no
effects, emits that single output in a singleton chunk, and always
terminates successfully with a unit result.
Note: using singleton chunks is not efficient. If possible,
use the chunk-based output
method instead.
Creates an pull that performs no effects, emits no outputs, and terminates successfully with the supplied value as its result.
Creates an pull that performs no effects, emits no outputs, and terminates successfully with the supplied value as its result.
Lifts a throwable error into an atomic pull that emits no outputs and fails with the given error, without any result.
Lifts a throwable error into an atomic pull that emits no outputs and fails with the given error, without any result.
The F
type must be explicitly provided (e.g., via raiseError[IO]
or raiseError[Fallible]
).
Implicits
Implicits
FunctionK
instance for F ~> Pull[F, INothing, *]
FunctionK
instance for F ~> Pull[F, INothing, *]
- Example
scala> import cats.Id scala> Pull.functionKInstance[Id](42).flatMap(Pull.output1).stream.compile.toList res0: cats.Id[List[Int]] = List(42)