diff options
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.scala | 29 |
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 = ??? +} |