summaryrefslogtreecommitdiff
path: root/src/actors/scala/actors/remote/Proxy.scala
diff options
context:
space:
mode:
authorPhilipp Haller <hallerp@gmail.com>2008-08-05 15:35:19 +0000
committerPhilipp Haller <hallerp@gmail.com>2008-08-05 15:35:19 +0000
commit2daab02552adedd4bc2b3a028a845abb5fdd566a (patch)
tree7829e75c57c345cf535079e05078aee2d1b9103e /src/actors/scala/actors/remote/Proxy.scala
parent3d82fd2ff551e5f6192b36e0a685e58887e07d8c (diff)
downloadscala-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.scala36
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])
/**