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

class Logger extends debug.REGISTRY.Debuggable

A component to support the recording of logging information from CSO programs. See io.threadcso.debug.Logging for an example of how an elidable log can be specialized; and io.threadcso.alternation.Run for a typical use.

Linear Supertypes
REGISTRY.Debuggable, AnyRef, Any
Ordering
  1. Alphabetic
  2. By Inheritance
Inherited
  1. Logger
  2. Debuggable
  3. AnyRef
  4. Any
  1. Hide All
  2. Show All
Visibility
  1. Public
  2. All

Instance Constructors

  1. new Logger(name: String, logSize: Int, mask: Int = 0xFFFFFFFF)

    name

    name of the log

    logSize

    the most recent logSize (or fewer) entries are recorded in a log.

    mask

    (variable) bitmask for the log: a call to log(bits,...) makes an entry in the log iff mask&bits==bits

    @author Bernard Sufrin, Oxford
    $Revision: 238 $
    $Date: 2017-10-07 21:21:09 +0100 (Sat, 07 Oct 2017) $

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. def apply(bits: Int, text: ⇒ String)(implicit loc: SourceLocation.SourceLocation): Unit

    Atomically add the timestamped text to the end of the log if mask&bits==bits.

    Atomically add the timestamped text to the end of the log if mask&bits==bits. Calls to this method are elided if the CSO library was compiled with "-Xelide-below 350" (production versions are usually so-compiled). We rely on built-in JVM synchronization for atomicity.

    Annotations
    @elidable( FINEST )
  5. final def asInstanceOf[T0]: T0
    Definition Classes
    Any
  6. def clone(): AnyRef
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  7. final def eq(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef
  8. def equals(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  9. val events: Seq[(basis.Nanoseconds, String, SourceLocation.SourceLocation, String)]

    Approximation to the current sequence of entries recorded by this logger.

    Approximation to the current sequence of entries recorded by this logger. Records consist of a timestamp (nanoseconds), a thread identifier, the source location (of the log call), the text being logged.

  10. def finalize(): Unit
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( classOf[java.lang.Throwable] )
  11. final def getClass(): Class[_]
    Definition Classes
    AnyRef → Any
  12. def getWaiting: Seq[Thread]

    Return a sequence of the threads currently waiting for this object, if any.

    Return a sequence of the threads currently waiting for this object, if any. Default is the empty sequence.

    Definition Classes
    Debuggable
  13. def hasState: Boolean

    This object has a state worth showing right now: false if showState will do no output.

    This object has a state worth showing right now: false if showState will do no output.

    Definition Classes
    Debuggable
  14. def hashCode(): Int
    Definition Classes
    AnyRef → Any
  15. final def isInstanceOf[T0]: Boolean
    Definition Classes
    Any
  16. val key: StateKey

    This object's key in the registry (if non-negative)

    This object's key in the registry (if non-negative)

    Definition Classes
    Debuggable
  17. def log(bits: Int, text: ⇒ String)(implicit loc: SourceLocation.SourceLocation): Unit

    Atomically add the timestamped text to the end of the log if mask&bits==bits. Calls to this method are not elidable. We rely on built-in JVM synchronization for atomicity.

  18. val logSize: Int
  19. val name: String
  20. final def ne(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef
  21. final def notify(): Unit
    Definition Classes
    AnyRef
  22. final def notifyAll(): Unit
    Definition Classes
    AnyRef
  23. def printState(): Unit
  24. def register(): Unit

    Register this object

    Register this object

    Definition Classes
    Debuggable
  25. def showState(out: PrintWriter): Unit

    Output the log to the given PrintWriter

    Output the log to the given PrintWriter

    Definition Classes
    LoggerDebuggable
  26. final def synchronized[T0](arg0: ⇒ T0): T0
    Definition Classes
    AnyRef
  27. def toString(): String
    Definition Classes
    Logger → AnyRef → Any
  28. def unregister(): Unit

    Unregister this object

    Unregister this object

    Definition Classes
    Debuggable
  29. final def wait(): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  30. final def wait(arg0: Long, arg1: Int): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  31. final def wait(arg0: Long): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  32. def withDebugger[T](condition: Boolean)(body: ⇒ T): T

    Conditionally register this object with the debugger only for the duration of the evaluation of body.

    Conditionally register this object with the debugger only for the duration of the evaluation of body. To be used as a last resort for the exasperated CSO toolkit debugger.

    Definition Classes
    Debuggable

Inherited from REGISTRY.Debuggable

Inherited from AnyRef

Inherited from Any

Ungrouped