diff options
Diffstat (limited to 'examples/scala-js/tools/shared/src/main/scala/scala/scalajs/tools/env/ComJSEnv.scala')
-rw-r--r-- | examples/scala-js/tools/shared/src/main/scala/scala/scalajs/tools/env/ComJSEnv.scala | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/examples/scala-js/tools/shared/src/main/scala/scala/scalajs/tools/env/ComJSEnv.scala b/examples/scala-js/tools/shared/src/main/scala/scala/scalajs/tools/env/ComJSEnv.scala new file mode 100644 index 0000000..882e46a --- /dev/null +++ b/examples/scala-js/tools/shared/src/main/scala/scala/scalajs/tools/env/ComJSEnv.scala @@ -0,0 +1,38 @@ +/* __ *\ +** ________ ___ / / ___ __ ____ Scala.js sbt plugin ** +** / __/ __// _ | / / / _ | __ / // __/ (c) 2013, LAMP/EPFL ** +** __\ \/ /__/ __ |/ /__/ __ |/_// /_\ \ http://scala-js.org/ ** +** /____/\___/_/ |_/____/_/ | |__/ /____/ ** +** |/____/ ** +\* */ + + +package scala.scalajs.tools.env + +import scala.scalajs.tools.io._ +import scala.scalajs.tools.classpath._ +import scala.scalajs.tools.logging._ + +/** An [[AsyncJSEnv]] that provides communication to and from the JS VM. + * + * Inside the VM there is a global JavaScript object named `scalajsCom` that + * can be used to control the message channel. It's operations are: + * {{{ + * // initialize com (with callback) + * scalajsCom.init(function(msg) { console.log("Received: " + msg); }); + * + * // send a message to host system + * scalajsCom.send("my message"); + * + * // close com (releases callback, allowing VM to terminate) + * scalajsCom.close(); + * }}} + */ +trait ComJSEnv extends AsyncJSEnv { + def comRunner(classpath: CompleteClasspath, code: VirtualJSFile, + logger: Logger, console: JSConsole): ComJSRunner +} + +object ComJSEnv { + class ComClosedException extends Exception("JSCom has been closed") +} |