Packages

p

gopher

channels

package channels

Overview

  • Input and Output provide callback-based interfaces for input/output facilities.
  • Channel provide implementation for asynchronics channels processing inside JVM.
  • SelectorBuilder is a way to create selectors.

Internals

Core entity is Continuated which provide iteratee-like structure for reading and writing. Instance of Continuated represent one step of computations and leave in queue inside ChannelProcessor or ChannelActor Selector transform Continuated to executed exclusive with each other within one selector. Also we have IdleDetector which determinate idle selectors and activer appropriative actions.

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

Type Members

  1. class ActorBackedChannel [A] extends Channel[A]
  2. case class AsyncFullReadSelectorArgument [A, B](f: (ContRead[A, B]) ⇒ Option[(In[A]) ⇒ Future[Continuated[B]]]) extends ReadSelectorArgument[A, B] with Product with Serializable
  3. case class AsyncFullSkipSelectorArgument [A](f: (Skip[A]) ⇒ Option[Future[Continuated[A]]]) extends SkipSelectorArgument[A] with Product with Serializable
  4. case class AsyncFullWriteSelectorArgument [A, B](f: (ContWrite[A, B]) ⇒ Option[(A, Future[Continuated[B]])]) extends WriteSelectorArgument[A, B] with Product with Serializable
  5. case class AsyncNoGenReadSelectorArgument [A, B](f: (ContRead[A, B]) ⇒ (A) ⇒ Future[Continuated[B]]) extends ReadSelectorArgument[A, B] with Product with Serializable
  6. case class AsyncNoOptSkipSelectorArgument [A](f: (Skip[A]) ⇒ Future[Continuated[A]]) extends SkipSelectorArgument[A] with Product with Serializable
  7. case class AsyncNoOptWriteSelectorArgument [A, B](f: (ContWrite[A, B]) ⇒ (A, Future[Continuated[B]])) extends WriteSelectorArgument[A, B] with Product with Serializable
  8. case class AsyncNoOptionReadSelectorArgument [A, B](f: (ContRead[A, B]) ⇒ (In[A]) ⇒ Future[Continuated[B]]) extends ReadSelectorArgument[A, B] with Product with Serializable
  9. case class AsyncPairReadSelectorArgument [A, B](f: (A, ContRead[A, B]) ⇒ Future[Continuated[B]]) extends ReadSelectorArgument[A, B] with Product with Serializable
  10. abstract class BaseBufferedChannelActor [A] extends ChannelActor[A]

    ChannelActor - actor, which leave

  11. class BufferedChannelActor [A] extends BaseBufferedChannelActor[A]

    ChannelActor - actor, which leave

  12. class CFoldSelectorEffectedChannel [A, B] extends FoldSelectorEffectedChannel[A, B]
  13. class CFoldSelectorEffectedInput [A, B] extends FoldSelectorEffectedInput[A, B]
  14. class CFoldSelectorEffectedOutput [A, B] extends FoldSelectorEffectedOutput[A, B]
  15. trait Channel [A] extends InputOutput[A]
  16. abstract class ChannelActor [A] extends Actor

    ChannelActor - actor, which leave

  17. sealed trait ChannelActorMessage extends AnyRef
  18. case class ChannelCloseProcessed (nElements: Int) extends ChannelActorMessage with Product with Serializable

    result of CloseChannelRead, return number of elements left to read

  19. class ChannelOverflowException extends RuntimeException
  20. class ChannelProcessor extends Actor
  21. class ChannelSupervisor extends Actor
  22. case class CloseChannel (id: Long) extends Product with Serializable
  23. case class ClosedChannelRead (cont: ContRead[_, _]) extends ChannelActorMessage with Product with Serializable

    this is message wich send to ChannelActor, when we know, that channel is closed.

    this is message wich send to ChannelActor, when we know, that channel is closed. In such case, we don't konw: is actor stopped or not, So, we say this message (instead read) and wait for reply. If reply is not received within given timeout: think that channel is-dead.

  24. case class ContRead [A, B](function: (ContRead[A, B]) ⇒ Option[(In[A]) ⇒ Future[Continuated[B]]], channel: Input[A], flowTermination: FlowTermination[B]) extends FlowContinuated[B] with Product with Serializable

    read A and compute B as result.

  25. case class ContWrite [A, B](function: (ContWrite[A, B]) ⇒ Option[(A, Future[Continuated[B]])], channel: Output[A], flowTermination: FlowTermination[B]) extends FlowContinuated[B] with Product with Serializable

    write A and compute B as result

  26. sealed trait Continuated [+A] extends AnyRef

    represent continuated computation from A to B.

  27. case class Done [A](result: A, flowTermination: FlowTermination[A]) extends FlowContinuated[A] with Product with Serializable
  28. class DuppedInput [A] extends AnyRef
  29. trait EffectedChannel [A] extends Channel[A] with Effected[Channel[A]]
  30. trait EffectedInput [A] extends Input[A] with Effected[Input[A]]
  31. trait EffectedOutput [A] extends Effected[Output[A]] with Output[A]
  32. sealed trait FlowContinuated [A] extends Continuated[A]
  33. class FoldSelect [T] extends FoldSelectorBuilder[T]

    Short name for use in fold signature

  34. abstract class FoldSelectorBuilder [T] extends SelectorBuilder[T]
  35. class FoldSelectorBuilderImpl extends SelectorBuilderImpl
  36. trait FoldSelectorEffectedChannel [A, B] extends FoldSelectorEffectedInput[A, B] with FoldSelectorEffectedOutput[A, B]
  37. trait FoldSelectorEffectedInput [A, B] extends Input[A]

    effected input inside fold.

    effected input inside fold. We know, that exists only one call of reading(FoldSelectorInput), generated in our fold statement. Than

    TODO: eliminate this class, instead refactoer SelectedReaderImpl to customize generation of reader statement.

  38. trait FoldSelectorEffectedOutput [A, B] extends Output[A]
  39. trait ForeverSelectorBuilder extends SelectorBuilder[Unit]

    Builder for 'forever' selector.

    Builder for 'forever' selector. Can be obtained as gopherApi.select.forever.

  40. class FutureInput [A] extends Input[A]

    Future[A], represented as input which produce a value when completed, after this closes.

    Future[A], represented as input which produce a value when completed, after this closes. If evaluation of feature is unsuccessful (i.e. failure), than appropriative exception is thrown during reading.

    Can be obtained from gopherApi.

    import gopherApi._
    
    val myInput = futureInput(future)
    select.forever{
       case x: myInput.read => Console.println(s"we receive value from future: ${x}")
                             implicitly[FlowTermination[Unit]].doExit(())
       case x: myChannel.read => Console.println(s"value from channel: ${x}")
    }

    Also it is possiblt to direclty read from future in case guard:

    select.forever{
       case x: T if (x==future.read) => Console.println(s"we receive value from future: ${x}")
       case x: T if (x==channel.read) => Console.println(s"value from channel: ${x}")
    }
  41. trait GopherAPIProvider extends AnyRef
  42. class GrowingBufferedChannelActor [A] extends BaseBufferedChannelActor[A]

    ChannelActor - actor, which leave

  43. trait Input [A] extends GopherAPIProvider

    Entity, from which we can read objects of type A.

  44. trait InputOutput [A] extends Input[A] with Output[A]
  45. class InputSelectorBuilder [T] extends SelectorBuilder[T] with Input[T]

    Builder for 'input' selector.

    Builder for 'input' selector. Can be obtained as gopherApi.select.input. or map of forever selector.

  46. class InputWithTimeouts [A] extends AnyRef

    Wrap origin input into input, which produce 'timeout' value into timeouts channel when reading from wrapped channel take more time than timeout .

    Wrap origin input into input, which produce 'timeout' value into timeouts channel when reading from wrapped channel take more time than timeout .

    See also

    InputChannel.withInputTimeouts

  47. class LazyChannel [A] extends Input[A] with Output[A]

    lazy channel, which created during first input/output operations.

    lazy channel, which created during first input/output operations. (used in transputers as default value for In/Out Ports)

  48. class MultithreadedEffectedChannel [A] extends MultithreadedEffected[Channel[A]] with EffectedChannel[A]
  49. class MultithreadedEffectedInput [A] extends MultithreadedEffected[Input[A]] with EffectedInput[A]
  50. class MultithreadedEffectedOutput [A] extends MultithreadedEffected[Output[A]] with EffectedOutput[A]
  51. case class NewChannel (id: Long, capacity: Int) extends Product with Serializable
  52. trait OnceSelectorBuilder [T] extends SelectorBuilder[T]

    Builder for 'once' selector.

    Builder for 'once' selector. Can be obtained as gopherApi.select.once.

  53. class OneTimeChannel [T] extends Channel[T]

    channel, in which only one message can be written, after which it is automatically closed

    channel, in which only one message can be written, after which it is automatically closed

    Writer is not waiting for reader to start.

  54. class OrInput [A] extends Input[A]

    Input, which combine two other inputs.

    Input, which combine two other inputs.

    can be created with '|' operator.

    val x = read(x|y)
  55. trait Output [A] extends GopherAPIProvider

    Entity, where we can write objects of type A.

  56. class OutputWithTimeouts [A] extends AnyRef

  57. trait PromiseFlowTermination [A] extends FlowTermination[A]
  58. sealed trait ReadSelectorArgument [A, B] extends AnyRef
  59. sealed trait ReadyTestResult [+A] extends AnyRef
  60. class SelectFactory extends AnyRef

    Factory for select instantiation.

    Factory for select instantiation. Can be obtained via gopherAPI

    val selector = gopherApi.select.forever
    for(s <- selector) ...
  61. class Selector [A] extends PromiseFlowTermination[A]
  62. trait SelectorBuilder [A] extends AnyRef
  63. class SelectorBuilderImpl extends ASTUtilImpl
  64. class SinglethreadedEffectedChannel [A] extends SinglethreadedEffected[Channel[A]] with EffectedChannel[A]
  65. class SinglethreadedEffectedInput [A] extends SinglethreadedEffected[Input[A]] with EffectedInput[A]
  66. class SinglethreadedEffectedOutput [A] extends SinglethreadedEffected[Output[A]] with EffectedOutput[A]
  67. case class Skip [A](function: (Skip[A]) ⇒ Option[Future[Continuated[A]]], flowTermination: FlowTermination[A]) extends FlowContinuated[A] with Product with Serializable

    skip (i.e.

    skip (i.e. do some operation not related to reading or writing.)

  68. sealed trait SkipSelectorArgument [A] extends AnyRef
  69. case class SyncPairReadSelectorArgument [A, B](f: (A, ContRead[A, B]) ⇒ Continuated[B]) extends ReadSelectorArgument[A, B] with Product with Serializable
  70. case class SyncReadSelectorArgument [A, B](f: (ContRead[A, B]) ⇒ (In[A]) ⇒ Continuated[B]) extends ReadSelectorArgument[A, B] with Product with Serializable
  71. case class SyncSelectorArgument [A](f: (Skip[A]) ⇒ Continuated[A]) extends SkipSelectorArgument[A] with Product with Serializable
  72. case class SyncWriteSelectorArgument [A, B](f: (ContWrite[A, B]) ⇒ (A, Continuated[B])) extends WriteSelectorArgument[A, B] with Product with Serializable
  73. class UnbufferedChannelActor [A] extends ChannelActor[A]

    Actor backend for channel

  74. sealed trait WriteSelectorArgument [A, B] extends AnyRef
  75. class ZippedInput [A, B] extends Input[(A, B)]

Value Members

  1. object Channel
  2. object ChannelClose extends ChannelActorMessage with Product with Serializable
  3. object ChannelRefDecrement extends ChannelActorMessage with Product with Serializable

    this message is send, when all references to some instance of this channel are unreachable, so if we have no other instances (i.e.

    this message is send, when all references to some instance of this channel are unreachable, so if we have no other instances (i.e. remote channel incarnation), than we must destroy channel.

  4. object ChannelRefIncrement extends ChannelActorMessage with Product with Serializable

    this message is send, when we create new remote reference to channel, backed by this actor.

  5. object ContRead extends Serializable
  6. object ContWrite extends Serializable
  7. object CurrentFlowTermination
  8. object EffectedChannel
  9. object EffectedInput
  10. object EffectedOutput
  11. object FoldSelectorBuilder
  12. object FoldSelectorEffectedChannel
  13. object FoldSelectorEffectedInput
  14. object FoldSelectorEffectedOutput
  15. object GracefullChannelStop extends ChannelActorMessage with Product with Serializable

    When we decide to stop channel, do it via special message, to process one after messages, which exists now in queue.

    When we decide to stop channel, do it via special message, to process one after messages, which exists now in queue.

    Note, that channel-stop messages can be send only from ChannelActor

  16. object Input
  17. object InputMacro
  18. object Never extends Continuated[Nothing] with Product with Serializable

    never means the end of conversation

  19. object OneTimeChannel
  20. object Output
  21. object PromiseFlowTermination
  22. object ReadyTestResult
  23. object SelectorBuilder
  24. object Skip extends Serializable
  25. object ZippedInput

Inherited from AnyRef

Inherited from Any

Ungrouped