Scope

abstract class Scope[F[_]]

Represents a period of stream execution in which resources are acquired and released.

Represents a period of stream execution in which resources are acquired and released.

Note: this type is generally used to implement low-level actions that manipulate resource lifetimes and hence, isn't generally used by user-level code.

Companion
object
class Object
trait Matchable
class Any

Value members

Abstract methods

def lease: F[Option[Lease[F]]]

Leases the resources of this scope until the returned lease is cancelled.

Leases the resources of this scope until the returned lease is cancelled.

Note that this leases all resources in this scope, resources in all parent scopes (up to root) and resources of all child scopes.

None is returned if this scope is already closed. Otherwise a lease is returned, which must be cancelled. Upon cancellation, resource finalizers may be run, depending on the state of the owning scopes.

Resources may be finalized during the execution of this method and before the lease has been acquired for a resource. In such an event, the already finalized resource won't be leased. As such, it is important to call lease only when all resources are known to be non-finalized / non-finalizing.

When the lease is returned, all resources available at the time lease was called have been successfully leased.

Concrete methods

def leaseOrError(F: MonadError[F, Throwable]): F[Lease[F]]

Like lease, but fails with an error if the scope is closed.

Like lease, but fails with an error if the scope is closed.

Deprecated methods

@deprecated("Unsound when used with translateInterruptible - use Stream.interruptWhen instead", "2.4.6")
def interrupt(cause: Either[Throwable, Unit]): F[Unit]

Interrupts evaluation of the current scope. Only scopes previously indicated with Stream.interruptScope may be interrupted. For other scopes this will fail.

Interrupts evaluation of the current scope. Only scopes previously indicated with Stream.interruptScope may be interrupted. For other scopes this will fail.

Interruption is final and may take two forms:

When invoked on right side, that will interrupt only current scope evaluation, and will resume when control is given to next scope.

When invoked on left side, then this will inject given throwable like it will be caused by stream evaluation, and then, without any error handling the whole stream will fail with supplied throwable.

Deprecated