sealed abstract class ZTRef[+EA, +EB, -A, +B] extends Serializable
A ZTRef[EA, EB, A, B]
is a polymorphic, purely functional description of a
mutable reference that can be modified as part of a transactional effect. The
fundamental operations of a ZTRef
are set
and get
. set
takes a value
of type A
and transactionally sets the reference to a new value,
potentially failing with an error of type EA
. get
gets the current value
of the reference and returns a value of type B
, potentially failing with an
error of type EB
.
When the error and value types of the ZTRef
are unified, that is, it is a
ZTRef[E, E, A, A]
, the ZTRef
also supports atomic modify
and update
operations. All operations are guaranteed to be executed transactionally.
NOTE: While ZTRef
provides the transactional equivalent of a mutable
reference, the value inside the ZTRef
should be immutable. For performance
reasons ZTRef
is implemented in terms of compare and swap operations rather
than synchronization. These operations are not safe for mutable values that
do not support concurrent access.
- Self Type
- ZTRef[EA, EB, A, B]
- Alphabetic
- By Inheritance
- ZTRef
- Serializable
- Serializable
- AnyRef
- Any
- Hide All
- Show All
- Public
- All
Abstract Value Members
-
abstract
def
atomic: Atomic[_]
- Attributes
- protected
-
abstract
def
fold[EC, ED, C, D](ea: (EA) ⇒ EC, eb: (EB) ⇒ ED, ca: (C) ⇒ Either[EC, A], bd: (B) ⇒ Either[ED, D]): ZTRef[EC, ED, C, D]
Folds over the error and value types of the
ZTRef
.Folds over the error and value types of the
ZTRef
. This is a highly polymorphic method that is capable of arbitrarily transforming the error and value types of theZTRef
. For most use cases one of the more specific combinators implemented in terms offold
will be more ergonomic but this method is extremely useful for implementing new combinators. -
abstract
def
foldAll[EC, ED, C, D](ea: (EA) ⇒ EC, eb: (EB) ⇒ ED, ec: (EB) ⇒ EC, ca: (C) ⇒ (B) ⇒ Either[EC, A], bd: (B) ⇒ Either[ED, D]): ZTRef[EC, ED, C, D]
Folds over the error and value types of the
ZTRef
, allowing access to the state in transforming theset
value.Folds over the error and value types of the
ZTRef
, allowing access to the state in transforming theset
value. This is a more powerful version offold
but requires unifying the error types. -
abstract
def
get: STM[EB, B]
Retrieves the value of the
ZTRef
. -
abstract
def
set(a: A): STM[EA, Unit]
Sets the value of the
ZTRef
.
Concrete Value Members
-
final
def
!=(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
-
final
def
##(): Int
- Definition Classes
- AnyRef → Any
-
final
def
==(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
-
final
def
asInstanceOf[T0]: T0
- Definition Classes
- Any
-
def
clone(): AnyRef
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws( ... ) @native()
-
final
def
collect[C](pf: PartialFunction[B, C]): ZTRef[EA, Option[EB], A, C]
Maps and filters the
get
value of theZTRef
with the specified partial function, returning aZTRef
with aget
value that succeeds with the result of the partial function if it is defined or else fails withNone
. -
final
def
contramap[C](f: (C) ⇒ A): ZTRef[EA, EB, C, B]
Transforms the
set
value of theZTRef
with the specified function. -
final
def
contramapEither[EC >: EA, C](f: (C) ⇒ Either[EC, A]): ZTRef[EC, EB, C, B]
Transforms the
set
value of theZTRef
with the specified fallible function. -
final
def
dimap[C, D](f: (C) ⇒ A, g: (B) ⇒ D): ZTRef[EA, EB, C, D]
Transforms both the
set
andget
values of theZTRef
with the specified functions. -
final
def
dimapEither[EC >: EA, ED >: EB, C, D](f: (C) ⇒ Either[EC, A], g: (B) ⇒ Either[ED, D]): ZTRef[EC, ED, C, D]
Transforms both the
set
andget
values of theZTRef
with the specified fallible functions. -
final
def
dimapError[EC, ED](f: (EA) ⇒ EC, g: (EB) ⇒ ED): ZTRef[EC, ED, A, B]
Transforms both the
set
andget
errors of theZTRef
with the specified functions. -
final
def
eq(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
-
def
equals(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
-
final
def
filterInput[A1 <: A](f: (A1) ⇒ Boolean): ZTRef[Option[EA], EB, A1, B]
Filters the
set
value of theZTRef
with the specified predicate, returning aZTRef
with aset
value that succeeds if the predicate is satisfied or else fails withNone
. -
final
def
filterOutput(f: (B) ⇒ Boolean): ZTRef[EA, Option[EB], A, B]
Filters the
get
value of theZTRef
with the specified predicate, returning aZTRef
with aget
value that succeeds if the predicate is satisfied or else fails withNone
. -
def
finalize(): Unit
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws( classOf[java.lang.Throwable] )
-
def
foldAllSTM[EC, ED, C, D](ea: (EA) ⇒ EC, eb: (EB) ⇒ ED, ec: (EB) ⇒ EC, ca: (C) ⇒ (B) ⇒ STM[EC, A], bd: (B) ⇒ STM[ED, D]): ZTRef[EC, ED, C, D]
Folds over the error and value types of the
ZTRef
, allowing access to the state in transforming theset
value.Folds over the error and value types of the
ZTRef
, allowing access to the state in transforming theset
value. This is a more powerful version offold
but requires unifying the error types. -
def
foldSTM[EC, ED, C, D](ea: (EA) ⇒ EC, eb: (EB) ⇒ ED, ca: (C) ⇒ STM[EC, A], bd: (B) ⇒ STM[ED, D]): ZTRef[EC, ED, C, D]
Folds over the error and value types of the
ZTRef
.Folds over the error and value types of the
ZTRef
. This is a highly polymorphic method that is capable of arbitrarily transforming the error and value types of theZTRef
. For most use cases one of the more specific combinators implemented in terms offold
will be more ergonomic but this method is extremely useful for implementing new combinators. -
final
def
getClass(): Class[_]
- Definition Classes
- AnyRef → Any
- Annotations
- @native()
-
def
hashCode(): Int
- Definition Classes
- AnyRef → Any
- Annotations
- @native()
-
final
def
isInstanceOf[T0]: Boolean
- Definition Classes
- Any
-
final
def
map[C](f: (B) ⇒ C): ZTRef[EA, EB, A, C]
Transforms the
get
value of theZTRef
with the specified function. -
final
def
mapEither[EC >: EB, C](f: (B) ⇒ Either[EC, C]): ZTRef[EA, EC, A, C]
Transforms the
get
value of theZTRef
with the specified fallible function. -
final
def
ne(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
-
final
def
notify(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native()
-
final
def
notifyAll(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native()
-
final
def
readOnly: ZTRef[EA, EB, Nothing, B]
Returns a read only view of the
ZTRef
. -
final
def
synchronized[T0](arg0: ⇒ T0): T0
- Definition Classes
- AnyRef
-
def
toString(): String
- Definition Classes
- AnyRef → Any
-
final
def
wait(): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... )
-
final
def
wait(arg0: Long, arg1: Int): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... )
-
final
def
wait(arg0: Long): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... ) @native()
-
final
def
writeOnly: ZTRef[EA, Unit, A, Nothing]
Returns a write only view of the
ZTRef
.