summaryrefslogtreecommitdiff
path: root/src/library
diff options
context:
space:
mode:
authorPhilipp Haller <hallerp@gmail.com>2009-07-21 17:35:01 +0000
committerPhilipp Haller <hallerp@gmail.com>2009-07-21 17:35:01 +0000
commitd063a9fa5162bf6f59b34d653b46534830310a50 (patch)
treefd9dfd389c834d3091fe37b86e720ede940d6850 /src/library
parent9e896451708d850d5bc3b3d27d169f09aece912b (diff)
downloadscala-d063a9fa5162bf6f59b34d653b46534830310a50.tar.gz
scala-d063a9fa5162bf6f59b34d653b46534830310a50.tar.bz2
scala-d063a9fa5162bf6f59b34d653b46534830310a50.zip
Enabled synchronous message sends for Replyable...
Enabled synchronous message sends for ReplyableReactor. Added get(timeout: Long) method to SyncVar.
Diffstat (limited to 'src/library')
-rw-r--r--src/library/scala/concurrent/SyncVar.scala14
1 files changed, 14 insertions, 0 deletions
diff --git a/src/library/scala/concurrent/SyncVar.scala b/src/library/scala/concurrent/SyncVar.scala
index 3b35c9ef10..d64c2fa51c 100644
--- a/src/library/scala/concurrent/SyncVar.scala
+++ b/src/library/scala/concurrent/SyncVar.scala
@@ -28,6 +28,20 @@ class SyncVar[A] {
else throw exception.get
}
+ def get(timeout: Long): Option[A] = synchronized {
+ if (!isDefined) {
+ try {
+ wait(timeout)
+ } catch {
+ case _: InterruptedException =>
+ }
+ }
+ if (exception.isEmpty) {
+ if (isDefined) Some(value) else None
+ } else
+ throw exception.get
+ }
+
def take() = synchronized {
try {
get