Packages

package stm

Ordering
  1. Alphabetic
Visibility
  1. Public
  2. All

Type Members

  1. final class STM[+E, +A] extends AnyVal

    STM[E, A] represents an effect that can be performed transactionally, resulting in a failure E or a value A.

    STM[E, A] represents an effect that can be performed transactionally, resulting in a failure E or a value A.

    def transfer(receiver: TRef[Int],
                 sender: TRef[Int], much: Int): UIO[Int] =
      STM.atomically {
        for {
          balance <- sender.get
          _       <- STM.check(balance >= much)
          _       <- receiver.update(_ + much)
          _       <- sender.update(_ - much)
          newAmnt <- receiver.get
        } yield newAmnt
      }
    
      val action: UIO[Int] =
        for {
          t <- STM.atomically(TRef.make(0).zip(TRef.make(20000)))
          (receiver, sender) = t
          balance <- transfer(receiver, sender, 1000)
        } yield balance
  2. final class TPromise[E, A] extends AnyVal
  3. class TQueue[A] extends AnyRef
  4. class TRef[A] extends AnyRef

    A variable that can be modified as part of a transactional effect.

  5. class TSemaphore extends AnyRef

Value Members

  1. object STM
  2. object TPromise
  3. object TQueue
  4. object TRef
  5. object TSemaphore

Ungrouped