diff options
-rw-r--r-- | src/actors/scala/actors/AbstractActor.scala | 7 | ||||
-rw-r--r-- | src/actors/scala/actors/remote/NetKernel.scala | 1 | ||||
-rw-r--r-- | src/actors/scala/actors/remote/Proxy.scala | 36 |
3 files changed, 36 insertions, 8 deletions
diff --git a/src/actors/scala/actors/AbstractActor.scala b/src/actors/scala/actors/AbstractActor.scala index 5bd29021c0..9157ca3451 100644 --- a/src/actors/scala/actors/AbstractActor.scala +++ b/src/actors/scala/actors/AbstractActor.scala @@ -11,7 +11,7 @@ package scala.actors /** - * The <code>AbstractActor</code> trait... + * The <code>AbstractActor</code> trait. * * @version 0.9.18 * @author Philipp Haller @@ -21,12 +21,17 @@ trait AbstractActor extends OutputChannel[Any] { private[actors] var exiting = false private[actors] def linkTo(to: AbstractActor): Unit + private[actors] def unlinkFrom(from: AbstractActor): Unit private[actors] def exit(from: AbstractActor, reason: AnyRef): Unit def !?(msg: Any): Any + def !?(msec: Long, msg: Any): Option[Any] + def !!(msg: Any): Future[Any] + def !![A](msg: Any, f: PartialFunction[Any, A]): Future[A] + } diff --git a/src/actors/scala/actors/remote/NetKernel.scala b/src/actors/scala/actors/remote/NetKernel.scala index 834de3026f..141ea5bbff 100644 --- a/src/actors/scala/actors/remote/NetKernel.scala +++ b/src/actors/scala/actors/remote/NetKernel.scala @@ -11,7 +11,6 @@ package scala.actors.remote import scala.collection.mutable.{HashMap, HashSet} -import scala.actors.Actor.loop case class NamedSend(senderLoc: Locator, receiverLoc: Locator, data: Array[Byte], session: Symbol) diff --git a/src/actors/scala/actors/remote/Proxy.scala b/src/actors/scala/actors/remote/Proxy.scala index 5f3bbda723..f45d1d390b 100644 --- a/src/actors/scala/actors/remote/Proxy.scala +++ b/src/actors/scala/actors/remote/Proxy.scala @@ -71,21 +71,45 @@ class Proxy(node: Node, name: Symbol, @transient var kernel: NetKernel) extends del !! (msg, f) def linkTo(to: AbstractActor): Unit = - del ! Apply0((target: AbstractActor, creator: Proxy) => - target.linkTo(creator)) + del ! Apply0(new LinkToFun) def unlinkFrom(from: AbstractActor): Unit = - del ! Apply0((target: AbstractActor, creator: Proxy) => - target.unlinkFrom(creator)) + del ! Apply0(new UnlinkFromFun) def exit(from: AbstractActor, reason: AnyRef): Unit = - del ! Apply0((target: AbstractActor, creator: Proxy) => - target.exit(creator, reason)) + del ! Apply0(new ExitFun(reason)) override def toString() = name+"@"+node } +@serializable +class LinkToFun extends Function2[AbstractActor, Proxy, Unit] { + def apply(target: AbstractActor, creator: Proxy) { + target.linkTo(creator) + } + override def toString = + "<LinkToFun>" +} + +@serializable +class UnlinkFromFun extends Function2[AbstractActor, Proxy, Unit] { + def apply(target: AbstractActor, creator: Proxy) { + target.unlinkFrom(creator) + } + override def toString = + "<UnlinkFromFun>" +} + +@serializable +class ExitFun(reason: AnyRef) extends Function2[AbstractActor, Proxy, Unit] { + def apply(target: AbstractActor, creator: Proxy) { + target.exit(creator, reason) + } + override def toString = + "<ExitFun>("+reason.toString+")" +} + case class Apply0(rfun: Function2[AbstractActor, Proxy, Unit]) /** |