final case class Actor[A](handler: (A) ⇒ Unit, onError: (Throwable) ⇒ Unit = ActorUtils.rethrowError)(implicit strategy: Strategy) extends Product with Serializable
Processes messages of type A
, one at a time. Messages are submitted to
the actor with the method !
. Processing is typically performed asynchronously,
this is controlled by the provided strategy
.
Memory consistency guarantee: when each message is processed by the handler
, any memory that it
mutates is guaranteed to be visible by the handler
when it processes the next message, even if
the strategy
runs the invocations of handler
on separate threads. This is achieved because
the Actor
reads a volatile memory location before entering its event loop, and writes to the same
location before suspending.
Implementation based on non-intrusive MPSC node-based queue, described by Dmitriy Vyukov: http://www.1024cores.net/home/lock-free-algorithms/queues/non-intrusive-mpsc-node-based-queue
- A
The type of messages accepted by this actor.
- handler
The message handler
- onError
Exception handler, called if the message handler throws any
Throwable
.- strategy
Execution strategy, for example, a strategy that is backed by an
ExecutorService
- Source
- Actor.scala
- See also
scalaz.concurrent.Promise for a use case.
- Alphabetic
- By Inheritance
- Actor
- Serializable
- Serializable
- Product
- Equals
- AnyRef
- Any
- Hide All
- Show All
- Public
- All
Instance Constructors
-
new
Actor(handler: (A) ⇒ Unit, onError: (Throwable) ⇒ Unit = ActorUtils.rethrowError)(implicit strategy: Strategy)
- handler
The message handler
- onError
Exception handler, called if the message handler throws any
Throwable
.- strategy
Execution strategy, for example, a strategy that is backed by an
ExecutorService
Value Members
-
def
!(a: A): Unit
Alias for
apply
-
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(a: A): Unit
Pass the message
a
to the mailbox of this actor -
final
def
asInstanceOf[T0]: T0
- Definition Classes
- Any
-
def
clone(): AnyRef
- Attributes
- protected[java.lang]
- Definition Classes
- AnyRef
- Annotations
- @throws( ... )
- def contramap[B](f: (B) ⇒ A): Actor[B]
-
final
def
eq(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
-
def
finalize(): Unit
- Attributes
- protected[java.lang]
- Definition Classes
- AnyRef
- Annotations
- @throws( classOf[java.lang.Throwable] )
-
final
def
getClass(): Class[_]
- Definition Classes
- AnyRef → Any
-
val
handler: (A) ⇒ Unit
The message handler
-
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
-
val
onError: (Throwable) ⇒ Unit
Exception handler, called if the message handler throws any
Throwable
. -
implicit
val
strategy: Strategy
Execution strategy, for example, a strategy that is backed by an
ExecutorService
-
final
def
synchronized[T0](arg0: ⇒ T0): T0
- Definition Classes
- AnyRef
- val toEffect: Run[A]
-
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( ... )