Packages

  • package root
    Definition Classes
    root
  • package gopher

    Provides scala API for 'go-like' CSP channels.

    Provides scala API for 'go-like' CSP channels.

    Overview

    see readme for quick introduction.

    Usage

    At first you must receive gopherApi as Akka extension:

    import gopher._
    
    .....
    val gopherApi = Gopher(actorSystem)

    Then you can use CPS channels with blocling operations inside go clauses:

    val channel = gopherApi.makeChannel[Long]
    val n = 10000
    val producer = go {
     @volatile var(x,y) = (0L,1L)
     for( s <- gopherApi.select.forever) {
       case z: channel.write if (z==x) =>
                  x = y
                  y = x+z
                  if (x > n) {
                     channel.close
                     implicitly[FlowTermination[Unit]].doExit()
                  }
     }
    }
    val consumer = for((c,i) <- channel.zip(1 to n)) {
       Console.println(s"fib(${i})=${c}")
    }
    Await.ready(consumer, 10 seconds)

    and defer/recover in go/goScope

    goScope{
      val f = openFile(myFileName)
      defer{
        if (! recover{case ex:FileNotFoundException => Console.println("invalid fname")}) {
           f.close()
        }
      }
    }
    Definition Classes
    root
    See also

    gopher.GopherAPI

    gopher.channels.Channel

    gopher.channels.Input

    gopher.channels.Output

    gopher.channels.SelectorBuilder

    gopher.channels.SelectFactory

  • trait Transputer extends AnyRef

    Reusable unit of application structure, which consists from set of input ports, set of output ports and behaviour

    Reusable unit of application structure, which consists from set of input ports, set of output ports and behaviour

    Transputers can be created as elementary behaviour, descibed by select statement and then can be combined into larger structures

    Transputers can be recovered from execeptions (i.e. transputer can be restarted or resume execution) or escalated to parent transputers or root superviser.

    Definition Classes
    gopher
  • InPort
  • OutPort

class OutPort[A] extends Output[A]

Linear Supertypes
Output[A], GopherAPIProvider, AnyRef, Any
Known Subclasses
Ordering
  1. Alphabetic
  2. By Inheritance
Inherited
  1. OutPort
  2. Output
  3. GopherAPIProvider
  4. AnyRef
  5. Any
  1. Hide All
  2. Show All
Visibility
  1. Public
  2. Protected

Instance Constructors

  1. new OutPort(output: Output[A])

Type Members

  1. type write = A
    Definition Classes
    Output
  2. type writeExp[X] = A
    Definition Classes
    Output
  3. type ~> = A
    Definition Classes
    Output

Value Members

  1. macro def !(a: A): Unit

    shortcut for blocking write.

    shortcut for blocking write.

    Definition Classes
    Output
  2. final def !=(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  3. final def ##: Int
    Definition Classes
    AnyRef → Any
  4. def *!: Input[A]
  5. macro def <~(a: A): Output[A]

    shortcut for blocking write.

    shortcut for blocking write.

    Definition Classes
    Output
  6. final def ==(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  7. def >~~>(x: InPort[A]): Unit
  8. def api: GopherAPI
    Definition Classes
    OutPortOutputGopherAPIProvider
  9. final def asInstanceOf[T0]: T0
    Definition Classes
    Any
  10. def awrite(a: A): Future[A]
    Definition Classes
    Output
  11. def awriteAll[C <: Iterable[A]](c: C): Future[Unit]
    Definition Classes
    Output
  12. def cbwrite[B](f: (ContWrite[A, B]) => Option[(A, Future[Continuated[B]])], ft: FlowTermination[B]): Unit

    apply f and send result to channels processor.

    apply f and send result to channels processor.

    Definition Classes
    OutPortOutput
  13. def clone(): AnyRef
    Attributes
    protected[lang]
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.CloneNotSupportedException]) @native() @HotSpotIntrinsicCandidate()
  14. def connect(inPort: InPort[A], bufferSize: Int = 1): Unit
  15. def connect(x: Output[A]): Unit
  16. final def eq(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef
  17. def equals(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef → Any
  18. final def getClass(): Class[_ <: AnyRef]
    Definition Classes
    AnyRef → Any
    Annotations
    @native() @HotSpotIntrinsicCandidate()
  19. def hashCode(): Int
    Definition Classes
    AnyRef → Any
    Annotations
    @native() @HotSpotIntrinsicCandidate()
  20. def inputSide: Option[Input[A]]
  21. final def isInstanceOf[T0]: Boolean
    Definition Classes
    Any
  22. final def ne(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef
  23. final def notify(): Unit
    Definition Classes
    AnyRef
    Annotations
    @native() @HotSpotIntrinsicCandidate()
  24. final def notifyAll(): Unit
    Definition Classes
    AnyRef
    Annotations
    @native() @HotSpotIntrinsicCandidate()
  25. def pam[B](g: (B) => A): Output[B]

    alias for premap

    alias for premap

    Definition Classes
    Output
  26. def premap[C](g: (C) => A): Output[C]

    before passing value to output, apply g to one.

    before passing value to output, apply g to one.

    Definition Classes
    Output
  27. final def synchronized[T0](arg0: => T0): T0
    Definition Classes
    AnyRef
  28. def toString(): String
    Definition Classes
    AnyRef → Any
  29. def unfold[S](s: S)(f: (S) => (S, A)): Unit
    Definition Classes
    Output
  30. var v: Output[A]
  31. final def wait(arg0: Long, arg1: Int): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.InterruptedException])
  32. final def wait(arg0: Long): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.InterruptedException]) @native()
  33. final def wait(): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.InterruptedException])
  34. def withOutputTimeouts(timeout: FiniteDuration): (Output[A], Input[FiniteDuration])

    provide pair from Output and Input (ready, timeouts) such that writing to ready will case writing to output and if it was not completed during timeout than appropriative duration will be availabe in timeouts input.

    provide pair from Output and Input (ready, timeouts) such that writing to ready will case writing to output and if it was not completed during timeout than appropriative duration will be availabe in timeouts input.

    val (chReady, chTimeouts) = ch withOutputTimeouts (5 seconds) select.forever { case x: chReady.write if (x==somethingToWrite) => Console.println(s" ${x} send") case t: chTimeouts.read => Console.println(s"timeout during writing") }

    Definition Classes
    Output
  35. macro def write(a: A): A

    'blocking' write of 'a' to channel.

    'blocking' write of 'a' to channel. Note, that this method can be called only inside 'go' or 'async' blocks.

    Definition Classes
    Output
  36. macro def writeAll[C <: Iterable[A]](it: C): Unit
    Definition Classes
    Output

Deprecated Value Members

  1. def finalize(): Unit
    Attributes
    protected[lang]
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.Throwable]) @Deprecated
    Deprecated

Inherited from Output[A]

Inherited from GopherAPIProvider

Inherited from AnyRef

Inherited from Any

Ungrouped