trait SourceLike[+A, Context] extends AnyRef
Provides all of the operations of a Source[A]
, without the ability to get
a Source.View
.
- Alphabetic
- By Inheritance
- SourceLike
- AnyRef
- Any
- Hide All
- Show All
- Public
- All
Abstract Value Members
-
abstract
def
get(implicit txn: Context): A
Performs a transactional read and checks that it is consistent with all reads already made by
txn
.Performs a transactional read and checks that it is consistent with all reads already made by
txn
. Equivalent toapply()
, which is more concise in many situations.- txn
an active transaction.
- returns
the value of the
Ref
as observed bytxn
.
- Exceptions thrown
IllegalStateException
iftxn
is not active.
-
abstract
def
getWith[Z](f: (A) ⇒ Z)(implicit txn: Context): Z
Returns
f(get)
, possibly reevaluatingf
to avoid rollback if a conflicting change is made but the old and new values are equal after application off
.Returns
f(get)
, possibly reevaluatingf
to avoid rollback if a conflicting change is made but the old and new values are equal after application off
. Requires thatf(x) == f(y)
ifx == y
.getWith(f)
is equivalent tof(relaxedGet({ f(_) == f(_) }))
, although perhaps more efficient.- f
an idempotent function.
- returns
the result of applying
f
to the value contained in thisRef
.
-
abstract
def
relaxedGet(equiv: (A, A) ⇒ Boolean)(implicit txn: Context): A
Returns the same value as
get
, but allows the caller to determine whethertxn
should be rolled back if another thread changes the value of thisRef
beforetxn
is committed.Returns the same value as
get
, but allows the caller to determine whethertxn
should be rolled back if another thread changes the value of thisRef
beforetxn
is committed. Ifref.relaxedGet(equiv)
returnsv0
intxn
, another context changesref
tov1
, andequiv(v0, v1) == true
, thentxn
won't be required to roll back (at least not due to this read). If additional changes are made toref
additional calls to the equivalence function will be made, always withv0
as the first parameter.equiv
will always be invoked on the current thread. Extreme care should be taken if the equivalence function accesses anyRef
s.As an example, to perform a read that will not be validated during commit you can use the maximally permissive equivalence function:
val unvalidatedValue = ref.relaxedGet({ (_, _) => true })
To check view serializability rather than conflict serializability for a read:
val viewSerializableValue = ref.relaxedGet({ _ == _ })
The
getWith
method provides related functionality.- equiv
an equivalence function that returns true if a transaction that observed the first argument will still complete correctly, where the second argument is the actual value that should have been observed.
- returns
a value of the
Ref
, not necessary consistent with the rest of the reads performed bytxn
.
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
-
def
apply()(implicit txn: Context): A
Performs a transactional read and checks that it is consistent with all reads already made by
txn
.Performs a transactional read and checks that it is consistent with all reads already made by
txn
. Equivalent toget
.Example:
val x = Ref(0) atomic { implicit t => ... val v = x() // perform a read inside a transaction ... }
- txn
an active transaction.
- returns
the value of the
Ref
as observed bytxn
.
- Exceptions thrown
IllegalStateException
iftxn
is not active.
-
final
def
asInstanceOf[T0]: T0
- Definition Classes
- Any
-
def
clone(): AnyRef
- Attributes
- protected[java.lang]
- Definition Classes
- AnyRef
- Annotations
- @throws( ... )
-
final
def
eq(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
-
def
equals(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
-
def
finalize(): Unit
- Attributes
- protected[java.lang]
- Definition Classes
- AnyRef
- Annotations
- @throws( classOf[java.lang.Throwable] )
-
final
def
getClass(): Class[_]
- Definition Classes
- AnyRef → Any
-
def
hashCode(): Int
- Definition Classes
- AnyRef → Any
-
final
def
isInstanceOf[T0]: Boolean
- Definition Classes
- Any
-
final
def
ne(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
-
final
def
notify(): Unit
- Definition Classes
- AnyRef
-
final
def
notifyAll(): Unit
- Definition Classes
- AnyRef
-
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( ... )