Forks effects into a FiberMap from plain code; see
FiberMap.runtime.
Functions#
__init__#
__init__(fiber_map, runtime) -> None| Parameter | Type | Description |
|---|---|---|
fiber_map | FiberMap[K, A, E] | |
runtime | CapturedRuntime |
def __init__(self, fiber_map: FiberMap[K, A, E], runtime: CapturedRuntime) -> None:
self._map = fiber_map
self._runtime = runtime__call__#
__call__(key, eff, /, *, only_if_missing=False, propagate_interruption=False, uninterruptible=False, scheduler=None) -> Fiber[A, E]Fork eff on a root fiber under key. A closed map, or a
taken key with only_if_missing, gives back an interrupted fiber
that never runs eff.
| Parameter | Type | Description |
|---|---|---|
key | K | |
eff | Effect[A, E, R] | |
only_if_missing | bool = False | |
propagate_interruption | bool = False | |
uninterruptible | bool = False | |
scheduler | Scheduler | None = None |
Returns Fiber[A, E]
def __call__(
self,
key: K,
eff: Effect[A, E, R],
/,
*,
only_if_missing: bool = False,
propagate_interruption: bool = False,
uninterruptible: bool = False,
scheduler: Scheduler | None = None,
) -> Fiber[A, E]:
"""Fork ``eff`` on a root fiber under ``key``. A closed map, or a
taken key with ``only_if_missing``, gives back an interrupted fiber
that never runs ``eff``."""
require_effect(eff, "eff")
fiber_map = self._map
if fiber_map._state is None or (only_if_missing and fiber_map.unsafe_has(key)):
return self._runtime.interrupted()
fiber = self._runtime.fork(eff, uninterruptible=uninterruptible, scheduler=scheduler)
fiber_map.unsafe_set(
key,
fiber,
only_if_missing=only_if_missing,
propagate_interruption=propagate_interruption,
)
return fiber