summaryrefslogtreecommitdiff
path: root/examples/scala-js/scalalib/overrides/scala/concurrent/impl/AbstractPromise.scala
diff options
context:
space:
mode:
Diffstat (limited to 'examples/scala-js/scalalib/overrides/scala/concurrent/impl/AbstractPromise.scala')
-rw-r--r--examples/scala-js/scalalib/overrides/scala/concurrent/impl/AbstractPromise.scala29
1 files changed, 29 insertions, 0 deletions
diff --git a/examples/scala-js/scalalib/overrides/scala/concurrent/impl/AbstractPromise.scala b/examples/scala-js/scalalib/overrides/scala/concurrent/impl/AbstractPromise.scala
new file mode 100644
index 0000000..8ea135e
--- /dev/null
+++ b/examples/scala-js/scalalib/overrides/scala/concurrent/impl/AbstractPromise.scala
@@ -0,0 +1,29 @@
+package scala.concurrent.impl
+
+/**
+ * JavaScript specific implementation of AbstractPromise
+ *
+ * This basically implements a "CAS" in Scala for JavaScript. Its
+ * implementation is trivial because there is no multi-threading.
+ *
+ * @author Tobias Schlatter
+ */
+abstract class AbstractPromise {
+
+ private var state: AnyRef = _
+
+ protected final
+ def updateState(oldState: AnyRef, newState: AnyRef): Boolean = {
+ if (state eq oldState) {
+ state = newState
+ true
+ } else false
+ }
+
+ protected final def getState: AnyRef = state
+
+}
+
+object AbstractPromise {
+ protected def updater = ???
+}