diff options
author | Philipp Haller <hallerp@gmail.com> | 2008-08-05 15:35:19 +0000 |
---|---|---|
committer | Philipp Haller <hallerp@gmail.com> | 2008-08-05 15:35:19 +0000 |
commit | 2daab02552adedd4bc2b3a028a845abb5fdd566a (patch) | |
tree | 7829e75c57c345cf535079e05078aee2d1b9103e /src/actors/scala/actors/remote/Proxy.scala | |
parent | 3d82fd2ff551e5f6192b36e0a685e58887e07d8c (diff) | |
download | scala-2daab02552adedd4bc2b3a028a845abb5fdd566a.tar.gz scala-2daab02552adedd4bc2b3a028a845abb5fdd566a.tar.bz2 scala-2daab02552adedd4bc2b3a028a845abb5fdd566a.zip |
Made serialization of functions used in the rem...
Made serialization of functions used in the remote actors runtime more
robust by creating explicit classes.
Diffstat (limited to 'src/actors/scala/actors/remote/Proxy.scala')
-rw-r--r-- | src/actors/scala/actors/remote/Proxy.scala | 36 |
1 files changed, 30 insertions, 6 deletions
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]) /** |