summaryrefslogtreecommitdiff
path: root/src/library
diff options
context:
space:
mode:
authormichelou <michelou@epfl.ch>2006-01-19 17:22:06 +0000
committermichelou <michelou@epfl.ch>2006-01-19 17:22:06 +0000
commite885bf6a4b0110185cde628dc367091284f56c9f (patch)
tree4bddc66510a03e87d217d401d7e5a4177f769822 /src/library
parent5748364adc4faea15f4f4e8c022e4aff6e883194 (diff)
downloadscala-e885bf6a4b0110185cde628dc367091284f56c9f.tar.gz
scala-e885bf6a4b0110185cde628dc367091284f56c9f.tar.bz2
scala-e885bf6a4b0110185cde628dc367091284f56c9f.zip
- removed tabs in scala/concurrent/Process.scala
Diffstat (limited to 'src/library')
-rw-r--r--src/library/scala/concurrent/Process.scala109
1 files changed, 57 insertions, 52 deletions
diff --git a/src/library/scala/concurrent/Process.scala b/src/library/scala/concurrent/Process.scala
index 5f1f67cad0..ee17bf7cf1 100644
--- a/src/library/scala/concurrent/Process.scala
+++ b/src/library/scala/concurrent/Process.scala
@@ -1,78 +1,83 @@
/* __ *\
** ________ ___ / / ___ Scala API **
-** / __/ __// _ | / / / _ | (c) 2003-04, LAMP/EPFL **
+** / __/ __// _ | / / / _ | (c) 2003-2006, LAMP/EPFL **
** __\ \/ /__/ __ |/ /__/ __ | **
** /____/\___/_/ |_/____/_/ | | **
** |/ **
-** $Id$
\* */
+// $Id$
+
package scala.concurrent;
object Process {
- def spawn(body: => Unit): Process = {
- val p = new Process(body);
- p.start();
- p;
- }
- def spawn_link(body: => Unit): Process = {
- self.spawn_link(body);
- }
- def send(p: Process,msg: MailBox#Message) =
- p.send(msg);
- def receive[a](f: PartialFunction[MailBox#Message, a]): a =
- self.receive(f);
+ def spawn(body: => Unit): Process = {
+ val p = new Process(body);
+ p.start();
+ p
+ }
- def receiveWithin[a](msec: long)(f: PartialFunction[MailBox#Message, a]): a =
- self.receiveWithin(msec)(f);
+ def spawn_link(body: => Unit): Process =
+ self.spawn_link(body);
- def self: Process = {
- if (Thread.currentThread().isInstanceOf[Process])
- Thread.currentThread().asInstanceOf[Process]
- else error("Self called outside a process");
- }
+ def send(p: Process, msg: MailBox#Message) =
+ p.send(msg);
+
+ def receive[a](f: PartialFunction[MailBox#Message, a]): a =
+ self.receive(f);
+
+ def receiveWithin[a](msec: long)(f: PartialFunction[MailBox#Message, a]): a =
+ self.receiveWithin(msec)(f);
+
+ def self: Process =
+ if (Thread.currentThread().isInstanceOf[Process])
+ Thread.currentThread().asInstanceOf[Process]
+ else
+ error("Self called outside a process");
+
+ def exit(p: Process, reason: AnyRef) =
+ p.exit(reason);
- def exit(p: Process, reason: AnyRef) =
- p.exit(reason);
}
class Process(body: => Unit) extends Actor() {
- private var exitReason: AnyRef = null;
- private var links: List[Process] = Nil;
- override def run() = {
- try {body}
- catch {
- case _: java.lang.InterruptedException =>
- signal(exitReason);
- case (exitSignal) =>
- signal(exitSignal);
- }
- }
+ private var exitReason: AnyRef = null;
+ private var links: List[Process] = Nil;
- private def signal(s: MailBox#Message) = {
- links.foreach((p:Process) => p.send(Tuple3('EXIT,this,s)));
+ override def run() =
+ try {
+ body
}
+ catch {
+ case _: java.lang.InterruptedException =>
+ signal(exitReason)
+ case (exitSignal) =>
+ signal(exitSignal)
+ };
- def !(msg: MailBox#Message) =
- send(msg);
+ private def signal(s: MailBox#Message) =
+ links.foreach(p: Process => p.send(Triple('EXIT, this, s)));
- def link(p: Process) = {
- links = p::links;
- }
+ def !(msg: MailBox#Message) =
+ send(msg);
- def spawn_link(body: => Unit) = {
- val p = new Process(body);
- p.link(this);
- p.start();
- p
- }
+ def link(p: Process) =
+ links = p::links;
- //def self = this;
+ def spawn_link(body: => Unit) = {
+ val p = new Process(body);
+ p.link(this);
+ p.start();
+ p
+ }
+
+ //def self = this;
+
+ def exit(reason: AnyRef): Unit = {
+ exitReason = reason;
+ interrupt()
+ }
- def exit(reason: AnyRef): Unit = {
- exitReason = reason;
- interrupt();
- }
}