diff options
Diffstat (limited to 'src/actors/scala/actors/Channel.scala')
-rw-r--r-- | src/actors/scala/actors/Channel.scala | 136 |
1 files changed, 0 insertions, 136 deletions
diff --git a/src/actors/scala/actors/Channel.scala b/src/actors/scala/actors/Channel.scala deleted file mode 100644 index ddf7b329c8..0000000000 --- a/src/actors/scala/actors/Channel.scala +++ /dev/null @@ -1,136 +0,0 @@ -/* __ *\ -** ________ ___ / / ___ Scala API ** -** / __/ __// _ | / / / _ | (c) 2005-2013, LAMP/EPFL ** -** __\ \/ /__/ __ |/ /__/ __ | http://scala-lang.org/ ** -** /____/\___/_/ |_/____/_/ | | ** -** |/ ** -\* */ - -package scala.actors - -import scala.concurrent.SyncVar - -/** - * Used to pattern match on values that were sent to some channel `Chan,,n,,` - * by the current actor `self`. - * - * @example {{{ - * receive { - * case Chan1 ! msg1 => ... - * case Chan2 ! msg2 => ... - * } - * }}} - * - * @author Philipp Haller - */ -@deprecated("Use the akka.actor package instead. For migration from the scala.actors package refer to the Actors Migration Guide.", "2.11.0") -case class ! [a](ch: Channel[a], msg: a) - -/** - * Provides a means for typed communication among actors. Only the - * actor creating an instance of a `Channel` may receive from it. - * - * @author Philipp Haller - * - * @define actor channel - * @define channel channel - */ -@deprecated("Use the akka.actor package instead. For migration from the scala.actors package refer to the Actors Migration Guide.", "2.11.0") -class Channel[Msg](val receiver: InternalActor) extends InputChannel[Msg] with OutputChannel[Msg] with CanReply[Msg, Any] { - - type Future[+P] = scala.actors.Future[P] - - def this() = this(Actor.self) - - def !(msg: Msg) { - receiver ! scala.actors.!(this, msg) - } - - def send(msg: Msg, replyTo: OutputChannel[Any]) { - receiver.send(scala.actors.!(this, msg), replyTo) - } - - def forward(msg: Msg) { - receiver forward scala.actors.!(this, msg) - } - - def receive[R](f: PartialFunction[Msg, R]): R = { - val C = this.asInstanceOf[Channel[Any]] - receiver.receive { - case C ! msg if (f.isDefinedAt(msg.asInstanceOf[Msg])) => f(msg.asInstanceOf[Msg]) - } - } - - def ? : Msg = receive { - case x => x - } - - def receiveWithin[R](msec: Long)(f: PartialFunction[Any, R]): R = { - val C = this.asInstanceOf[Channel[Any]] - receiver.receiveWithin(msec) { - case C ! msg if (f.isDefinedAt(msg)) => f(msg) - case TIMEOUT => f(TIMEOUT) - } - } - - def react(f: PartialFunction[Msg, Unit]): Nothing = { - val C = this.asInstanceOf[Channel[Any]] - receiver.react { - case C ! msg if (f.isDefinedAt(msg.asInstanceOf[Msg])) => f(msg.asInstanceOf[Msg]) - } - } - - def reactWithin(msec: Long)(f: PartialFunction[Any, Unit]): Nothing = { - val C = this.asInstanceOf[Channel[Any]] - receiver.reactWithin(msec) { - case C ! msg if (f.isDefinedAt(msg)) => f(msg) - case TIMEOUT => f(TIMEOUT) - } - } - - def !?(msg: Msg): Any = { - val replyCh = new Channel[Any](Actor.self(receiver.scheduler)) - receiver.send(scala.actors.!(this, msg), replyCh) - replyCh.receive { - case x => x - } - } - - def !?(msec: Long, msg: Msg): Option[Any] = { - val replyCh = new Channel[Any](Actor.self(receiver.scheduler)) - receiver.send(scala.actors.!(this, msg), replyCh) - replyCh.receiveWithin(msec) { - case TIMEOUT => None - case x => Some(x) - } - } - - def !![A](msg: Msg, handler: PartialFunction[Any, A]): Future[A] = { - val c = new Channel[A](Actor.self(receiver.scheduler)) - val fun = (res: SyncVar[A]) => { - val ftch = new Channel[A](Actor.self(receiver.scheduler)) - receiver.send(scala.actors.!(this, msg), new OutputChannel[Any] { - def !(msg: Any) = - ftch ! handler(msg) - def send(msg: Any, replyTo: OutputChannel[Any]) = - ftch.send(handler(msg), replyTo) - def forward(msg: Any) = - ftch.forward(handler(msg)) - def receiver = - ftch.receiver - }) - ftch.react { - case any => res.set(any) - } - } - val a = new FutureActor[A](fun, c) - a.start() - a - } - - def !!(msg: Msg): Future[Any] = { - val noTransform: PartialFunction[Any, Any] = { case x => x } - this !! (msg, noTransform) - } - -} |