equal
deleted
inserted
replaced
45 } |
45 } |
46 } |
46 } |
47 |
47 |
48 trait Promise[A] extends Future[A] |
48 trait Promise[A] extends Future[A] |
49 { |
49 { |
|
50 def cancel: Unit |
50 def fulfill_result(res: Exn.Result[A]): Unit |
51 def fulfill_result(res: Exn.Result[A]): Unit |
51 def fulfill(x: A): Unit |
52 def fulfill(x: A): Unit |
52 } |
53 } |
53 |
54 |
54 |
55 |
76 private class Promise_Future[A](promise: Scala_Promise[A]) |
77 private class Promise_Future[A](promise: Scala_Promise[A]) |
77 extends Pending_Future(promise.future) with Promise[A] |
78 extends Pending_Future(promise.future) with Promise[A] |
78 { |
79 { |
79 override def is_finished: Boolean = promise.isCompleted |
80 override def is_finished: Boolean = promise.isCompleted |
80 |
81 |
|
82 def cancel: Unit = |
|
83 try { fulfill_result(Exn.Exn(Exn.Interrupt())) } |
|
84 catch { case _: IllegalStateException => } |
|
85 |
81 def fulfill_result(res: Exn.Result[A]): Unit = |
86 def fulfill_result(res: Exn.Result[A]): Unit = |
82 res match { |
87 res match { |
83 case Exn.Res(x) => promise.success(x) |
88 case Exn.Res(x) => promise.success(x) |
84 case Exn.Exn(e) => promise.failure(e) |
89 case Exn.Exn(e) => promise.failure(e) |
85 } |
90 } |