Packages

  • package root
    Definition Classes
    root
  • package io

    This is the documentation for the ThreadCSO Library.

    This is the documentation for the ThreadCSO Library. Notable packages include:

    Definition Classes
    root
  • package threadcso

    The standard threadCSO API.

    The standard threadCSO API. Most modules using CSO will need only the declaration:

    import io.threadcso._

    The present version of the ThreadCSO library API is 1.2Rr (for some number r)

    The revision number (Rr) will change if bugs are corrected but the code remains consistent with the previous API. Its minor version number will change if there is a correction to the code that breaks consistency with the previous API. Its major version will change if there is a substantial change in the semantics of an important CSO construct.

    August 2017: changes 1.1 => 1.2

    • renaming of very many internal classes and packages
    • basic channel implementations are more efficient, in some case much more so
    • alternation reliability improved
    • debugger registration of alternations is no longer needed
    • home-grown semaphores can specify which component they are part of: this makes interpreting a stack backtrace very much easier
    • there is a flexible logging system that is compatible with the debugger

    April 2016: changes 1.0 => 1.1

    • Extended rendezvous read operator is now ?? (was ?)
    • Extended rendezvous read event notation is now =??=> (was =?=>>)
    • The notation inport ? f is now equivalent to f(inport?()) This makes for a tidier layout when the function f is an explicit functional expression.

    Feb 1 2017: changes 1.1R1 => 1.1R2

    • Removed dependencies on deprecated Java->Scala functions: replaced with .asJava
    @author Bernard Sufrin, Oxford
    $Revision: 286 $
    $Date: 2017-11-18 17:41:30 +0000 (Sat, 18 Nov 2017) $
    Definition Classes
    io
  • package debug
    Definition Classes
    threadcso
  • package REGISTRY

    This object serves as a registry for (live) objects that the debugger interface may be interested in.

    This object serves as a registry for (live) objects that the debugger interface may be interested in.

    Definition Classes
    debug
  • DEBUGGER
  • Logger
  • Logging
c

io.threadcso.debug

DEBUGGER

class DEBUGGER extends AnyRef

A simple server that responds to browser requests with a description of the state of active CSO threads, open channel, and monitored values/expressions.

To ensure that the server is loaded and started it is necessary for code of the following spirit to be executed on program startup.

val debugger = new io.threadcso.DEBUGGER(<some port number>)

See also the definition of io.threadcso.debugger for an account of how this is usually done automatically (with a randomly-allocated free port number). This is essentially by mentioning the lazy variable io.threadcso.debugger. For example, the following code prints an announcement that the debugger is running

import io.threadcso._
           ...
           if (debugging) println(debugger)

in the form: Debugger(http://localhost:64601) -- which a browser can easily be pointed at.

Linear Supertypes
AnyRef, Any
Ordering
  1. Alphabetic
  2. By Inheritance
Inherited
  1. DEBUGGER
  2. AnyRef
  3. Any
  1. Hide All
  2. Show All
Visibility
  1. Public
  2. All

Instance Constructors

  1. new DEBUGGER(debugPort: Int = 0)

Value Members

  1. final def !=(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  2. final def ##(): Int
    Definition Classes
    AnyRef → Any
  3. final def ==(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  4. final def asInstanceOf[T0]: T0
    Definition Classes
    Any
  5. def clone(): AnyRef
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  6. final def eq(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef
  7. def equals(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  8. def finalize(): Unit
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( classOf[java.lang.Throwable] )
  9. final def getClass(): Class[_]
    Definition Classes
    AnyRef → Any
  10. def hashCode(): Int
    Definition Classes
    AnyRef → Any
  11. final def isInstanceOf[T0]: Boolean
    Definition Classes
    Any
  12. def monitor(): Unit

    Clear all monitored expressions.

  13. def monitor(name: String): Unit

    Remove the association of name to any string expression it was associated with.

  14. def monitor(name: String, state: ⇒ String): Unit

    Associate name with a string expression to be evaluated and reported when the state of the program is reported to a browser by the debugger.

  15. final def ne(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef
  16. final def notify(): Unit
    Definition Classes
    AnyRef
  17. final def notifyAll(): Unit
    Definition Classes
    AnyRef
  18. var port: Int

    The port number on which the debugger thread will listen for browser connections.

    The port number on which the debugger thread will listen for browser connections. Unless this port number is 0 the debugger is started. If not set by the jdk/scala property io.threadcso.debugger.port=... then this defaults to the debugPort class parameter (which itself defaults to 0).

  19. def showCSOState(out: PrintWriter): Unit

    Write a textual representation of the current state of the CSO program (its threads and channel and monitored variables) to out.

  20. final def synchronized[T0](arg0: ⇒ T0): T0
    Definition Classes
    AnyRef
  21. def toString(): String
    Definition Classes
    DEBUGGER → AnyRef → Any
  22. final def wait(): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  23. final def wait(arg0: Long, arg1: Int): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  24. final def wait(arg0: Long): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )

Inherited from AnyRef

Inherited from Any

Ungrouped