A FiberRef
is ZIO's equivalent of Java's ThreadLocal
. The value of a
FiberRef
is automatically propagated to child fibers when they are forked
and merged back in to the value of the parent fiber after they are joined.
for {
fiberRef <- FiberRef.make("Hello world!")
child <- fiberRef.set("Hi!").fork
_ <- child.join
result <- fiberRef.get
} yield result
Here result
will be equal to "Hi!" since changes made by a child fiber are
merged back in to the value of the parent fiber on join.
By default the value of the child fiber will replace the value of the parent fiber on join but you can specify your own logic for how values should be merged.
for {
fiberRef <- FiberRef.make(0, identity[Int], math.max)
child <- fiberRef.update(_ + 1).fork
_ <- fiberRef.update(_ + 2)
_ <- child.join
value <- fiberRef.get
} yield value
Here value
will be 2 as the value in the joined fiber is lower and we
specified max
as our combining function.
Attributes
- Companion:
- object
- Graph
- Supertypes
- Known subtypes
- class Proxy[A]class TrackingFiberRef[A]
- Self type
- FiberRef[A]
Members list
Type members
Types
The type of the patch that describes updates to the value of the
FiberRef
. In the simple case this will just be a function that sets the
value of the FiberRef
. In more complex cases this will describe an update
to a piece of a whole value, allowing updates to the value by different
fibers to be combined in a compositional way when those fibers are joined.
The type of the patch that describes updates to the value of the
FiberRef
. In the simple case this will just be a function that sets the
value of the FiberRef
. In more complex cases this will describe an update
to a piece of a whole value, allowing updates to the value by different
fibers to be combined in a compositional way when those fibers are joined.
Attributes
The type of the value of the FiberRef
.
The type of the value of the FiberRef
.
Attributes
Value members
Abstract methods
Combines two patches to produce a new patch that describes the updates of
the first patch and then the updates of the second patch. The combine
operation should be associative. In addition, if the combine operation is
commutative then joining multiple fibers concurrently will result in
deterministic FiberRef
values.
Combines two patches to produce a new patch that describes the updates of
the first patch and then the updates of the second patch. The combine
operation should be associative. In addition, if the combine operation is
commutative then joining multiple fibers concurrently will result in
deterministic FiberRef
values.
Attributes
Constructs a patch describing the updates to a value from an old value and a new value.
Constructs a patch describing the updates to a value from an old value and a new value.
Attributes
The initial patch that is applied to the value of the FiberRef
when a new
fiber is forked.
The initial patch that is applied to the value of the FiberRef
when a new
fiber is forked.
Attributes
Applies a patch to an old value to produce a new value that is equal to the old value with the updates described by the patch.
Applies a patch to an old value to produce a new value that is equal to the old value with the updates described by the patch.
Attributes
Concrete methods
Returns a ThreadLocal
that can be used to interact with this FiberRef
from side effecting code.
Returns a ThreadLocal
that can be used to interact with this FiberRef
from side effecting code.
This feature is meant to be used for integration with side effecting code,
that needs to access fiber specific data, like MDC contexts and the like.
The returned ThreadLocal
will be backed by this FiberRef
on all threads
that are currently managed by ZIO when this feature is enabled using
Runtime.enableCurrentFiber, and behave like an ordinary ThreadLocal
on all other threads.
Attributes
Reads the value associated with the current fiber. Returns initial value if
no value was set
or inherited from parent.
Reads the value associated with the current fiber. Returns initial value if
no value was set
or inherited from parent.
Attributes
Atomically sets the value associated with the current fiber and returns the old value.
Atomically sets the value associated with the current fiber and returns the old value.
Attributes
Atomically modifies the FiberRef
with the specified function and returns
the old value.
Atomically modifies the FiberRef
with the specified function and returns
the old value.
Attributes
Atomically modifies the FiberRef
with the specified partial function and
returns the old value. If the function is undefined on the current value it
doesn't change it.
Atomically modifies the FiberRef
with the specified partial function and
returns the old value. If the function is undefined on the current value it
doesn't change it.
Attributes
Gets the value associated with the current fiber and uses it to run the specified effect.
Gets the value associated with the current fiber and uses it to run the specified effect.
Attributes
Returns a ZIO
that runs with value
bound to the current fiber.
Returns a ZIO
that runs with value
bound to the current fiber.
Guarantees that fiber data is properly restored via acquireRelease
.
Attributes
Returns a scoped workflow that sets the value associated with the curent fiber to the specified value and restores it to its original value when the scope is closed.
Returns a scoped workflow that sets the value associated with the curent fiber to the specified value and restores it to its original value when the scope is closed.
Attributes
Returns a scoped workflow that updates the value associated with the current fiber using the specified function and restores it to its original value when the scope is closed.
Returns a scoped workflow that updates the value associated with the current fiber using the specified function and restores it to its original value when the scope is closed.
Attributes
Returns a ZIO
that runs with f
applied to the current fiber.
Returns a ZIO
that runs with f
applied to the current fiber.
Guarantees that fiber data is properly restored via acquireRelease
.
Attributes
Atomically modifies the FiberRef
with the specified function, which
computes a return value for the modification. This is a more powerful
version of update
.
Atomically modifies the FiberRef
with the specified function, which
computes a return value for the modification. This is a more powerful
version of update
.
Attributes
Atomically modifies the FiberRef
with the specified partial function,
which computes a return value for the modification if the function is
defined in the current value otherwise it returns a default value. This is
a more powerful version of updateSome
.
Atomically modifies the FiberRef
with the specified partial function,
which computes a return value for the modification if the function is
defined in the current value otherwise it returns a default value. This is
a more powerful version of updateSome
.
Attributes
Sets the value associated with the current fiber.
Sets the value associated with the current fiber.
Attributes
Atomically modifies the FiberRef
with the specified function.
Atomically modifies the FiberRef
with the specified function.
Attributes
Atomically modifies the FiberRef
with the specified function and returns
the result.
Atomically modifies the FiberRef
with the specified function and returns
the result.
Attributes
Atomically modifies the FiberRef
with the specified partial function. If
the function is undefined on the current value it doesn't change it.
Atomically modifies the FiberRef
with the specified partial function. If
the function is undefined on the current value it doesn't change it.
Attributes
Atomically modifies the FiberRef
with the specified partial function. If
the function is undefined on the current value it returns the old value
without changing it.
Atomically modifies the FiberRef
with the specified partial function. If
the function is undefined on the current value it returns the old value
without changing it.