scala.actors

trait Actor

[source: scala/actors/Actor.scala]

@serializable

trait Actor
extends AbstractActor

This class provides an implementation of event-based actors. The main ideas of our approach are explained in the two papers

Version
0.9.18
Author
Philipp Haller
Value Summary
protected val mailbox : MessageQueue
var trapExit : Boolean
Method Summary
def ! (msg : Any) : Unit
Sends msg to this actor (asynchronous).
def !! (msg : Any) : Future[Any]
Sends msg to this actor and immediately returns a future representing the reply value.
def !! [A](msg : Any, f : PartialFunction[Any, A]) : Future[A]
Sends msg to this actor and immediately returns a future representing the reply value. The reply is post-processed using the partial function f. This also allows to recover a more precise type for the reply value.
def !? (msec : Long, msg : Any) : Option[Any]
Sends msg to this actor and awaits reply (synchronous) within msec milliseconds.
def !? (msg : Any) : Any
Sends msg to this actor and awaits reply (synchronous).
def ? : Any
Receives the next message from this actor's mailbox.
abstract def act : Unit
The behavior of an actor is specified by implementing this abstract method. Note that the preferred way to create actors is through the actor method defined in object Actor.
def exit (reason : AnyRef) : Nothing
def exit : Nothing
Terminates with exit reason 'normal.
def forward (msg : Any) : Unit
Forwards msg to this actor (asynchronous).
def link (to : AbstractActor) : AbstractActor
Links self to actor to.
def link (body : => Unit) : Actor
Links self to actor defined by body.
def mailboxSize : Int
Returns the number of messages in this actor's mailbox
def react (f : PartialFunction[Any, Unit]) : Nothing
Receives a message from this actor's mailbox.
def reactWithin (msec : Long)(f : PartialFunction[Any, Unit]) : Nothing
Receives a message from this actor's mailbox within a certain time span.
def receive [R](f : PartialFunction[Any, R]) : R
Receives a message from this actor's mailbox.
def receiveWithin [R](msec : Long)(f : PartialFunction[Any, R]) : R
Receives a message from this actor's mailbox within a certain time span.
def receiver : Actor
Returns the Actor that is receiving from this OutputChannel.
def reply (msg : Any) : Unit
Replies with msg to the sender.
protected def scheduleActor (f : PartialFunction[Any, Unit], msg : Any) : Unit
protected def scheduler : IScheduler
def send (msg : Any, replyTo : OutputChannel[Any]) : Unit
Sends msg to this actor (asynchronous) supplying explicit reply destination.
def sender : OutputChannel[Any]
def start : Actor
Starts this actor.
def unlink (from : AbstractActor) : Unit
Unlinks self from actor from.
Methods inherited from AnyRef
getClass, hashCode, equals, clone, toString, notify, notifyAll, wait, wait, wait, finalize, ==, !=, eq, ne, synchronized
Methods inherited from Any
==, !=, isInstanceOf, asInstanceOf
Value Details
protected val mailbox : MessageQueue

var trapExit : Boolean

Method Details
protected def scheduler : IScheduler

def mailboxSize : Int
Returns the number of messages in this actor's mailbox
Returns
the number of messages in this actor's mailbox

def send(msg : Any, replyTo : OutputChannel[Any]) : Unit
Sends msg to this actor (asynchronous) supplying explicit reply destination.
Parameters
msg - the message to send
replyTo - the reply destination

def receive[R](f : PartialFunction[Any, R]) : R
Receives a message from this actor's mailbox.
Parameters
f - a partial function with message patterns and actions
Returns
result of processing the received value

def receiveWithin[R](msec : Long)(f : PartialFunction[Any, R]) : R
Receives a message from this actor's mailbox within a certain time span.
Parameters
msec - the time span before timeout
f - a partial function with message patterns and actions
Returns
result of processing the received value

def react(f : PartialFunction[Any, Unit]) : Nothing
Receives a message from this actor's mailbox.

This method never returns. Therefore, the rest of the computation has to be contained in the actions of the partial function.

Parameters
f - a partial function with message patterns and actions

def reactWithin(msec : Long)(f : PartialFunction[Any, Unit]) : Nothing
Receives a message from this actor's mailbox within a certain time span.

This method never returns. Therefore, the rest of the computation has to be contained in the actions of the partial function.

Parameters
msec - the time span before timeout
f - a partial function with message patterns and actions

abstract def act : Unit
The behavior of an actor is specified by implementing this abstract method. Note that the preferred way to create actors is through the actor method defined in object Actor.

def !(msg : Any) : Unit
Sends msg to this actor (asynchronous).

def forward(msg : Any) : Unit
Forwards msg to this actor (asynchronous).

def !?(msg : Any) : Any
Sends msg to this actor and awaits reply (synchronous).
Parameters
msg - the message to be sent
Returns
the reply
Overrides
AbstractActor.!?

def !?(msec : Long, msg : Any) : Option[Any]
Sends msg to this actor and awaits reply (synchronous) within msec milliseconds.
Parameters
msec - the time span before timeout
msg - the message to be sent
Returns
None in case of timeout, otherwise Some(x) where x is the reply
Overrides
AbstractActor.!?

def !!(msg : Any) : Future[Any]
Sends msg to this actor and immediately returns a future representing the reply value.
Overrides
AbstractActor.!!

def !![A](msg : Any, f : PartialFunction[Any, A]) : Future[A]
Sends msg to this actor and immediately returns a future representing the reply value. The reply is post-processed using the partial function f. This also allows to recover a more precise type for the reply value.
Overrides
AbstractActor.!!

def reply(msg : Any) : Unit
Replies with msg to the sender.

def ? : Any
Receives the next message from this actor's mailbox.

def sender : OutputChannel[Any]

def receiver : Actor
Returns the Actor that is receiving from this OutputChannel.

protected def scheduleActor(f : PartialFunction[Any, Unit], msg : Any) : Unit

def start : Actor
Starts this actor.

def link(to : AbstractActor) : AbstractActor
Links self to actor to.
Parameters
to - ...
Returns
...

def link(body : => Unit) : Actor
Links self to actor defined by body.

def unlink(from : AbstractActor) : Unit
Unlinks self from actor from.

def exit(reason : AnyRef) : Nothing

Terminates execution of self with the following effect on linked actors:

For each linked actor a with trapExit set to true, send message Exit(self, reason) to a.

For each linked actor a with trapExit set to false (default), call a.exit(reason) if reason != 'normal.


def exit : Nothing
Terminates with exit reason 'normal.