SelectGroup

class SelectGroup[F[_], S](api: Gopher[F]) extends SelectListeners[F, S, S]

Select group is a virtual 'lock' object. Readers and writers are grouped into select groups. When event about avaiability to read or to write is arrived and no current event group members is running, than run of one of the members is triggered. I.e. only one from group can run.

Note, that application develeper usually not work with SelectGroup directly, it is created internally by select pseudostatement.

See also

[gopher.Select]

[gopher.select]

Source
SelectGroup.scala
trait SelectListeners[F, S, S]
class Object
trait Matchable
class Any

Type members

Classlikes

case
class ReaderRecord[A](ch: ReadChannel[F, A], action: Try[A] => F[S]) extends Reader[A] with Expiration
case
class TimeoutRecord(duration: FiniteDuration, action: Try[FiniteDuration] => F[S]) extends Expiration
case
class WriterRecord[A](ch: WriteChannel[F, A], element: A, action: Try[Unit] => F[S]) extends Writer[A] with Expiration

Value members

Concrete methods

def addReader[A](ch: ReadChannel[F, A], action: Try[A] => F[S]): Unit
def addWriter[A](ch: WriteChannel[F, A], element: A, action: Try[Unit] => F[S]): Unit
transparent inline
def apply(inline pf: PartialFunction[Any, S]): S
override
def asyncMonad: CpsSchedulingMonad[F]
Definition Classes
Source
SelectGroup.scala
def done[S](s: S): Done[S]

short alias for SelectFold.Done

short alias for SelectFold.Done

Source
SelectGroup.scala
def onRead[A](ch: ReadChannel[F, A])(f: A => S): SelectGroup[F, S]

FluentDSL for user SelectGroup without macroses.

FluentDSL for user SelectGroup without macroses.

SelectGroup.onRead(input){ x => println(x) }
          .onRead(endSignal){ () => done=true }
Source
SelectGroup.scala
def onReadAsync[A](ch: ReadChannel[F, A])(f: A => F[S]): SelectGroup[F, S]
def onRead_async[A](ch: ReadChannel[F, A])(f: A => F[S]): F[SelectGroup[F, S]]
def onTimeout(t: FiniteDuration)(f: FiniteDuration => S): SelectGroup[F, S]
def onTimeoutAsync(t: FiniteDuration)(f: FiniteDuration => F[S]): SelectGroup[F, S]
def onTimeout_async(t: FiniteDuration)(f: FiniteDuration => F[S]): F[SelectGroup[F, S]]
def onWrite[A](ch: WriteChannel[F, A], a: => A)(f: A => S): SelectGroup[F, S]

FluentDSL for user SelectGroup without macroses.

FluentDSL for user SelectGroup without macroses.

SelectGroup.onWrite(input){ x => println(x) }
          .onWrite(endSignal){ () => done=true }
Source
SelectGroup.scala
def onWriteAsync[A](ch: WriteChannel[F, A], a: () => F[A])(f: A => F[S]): SelectGroup[F, S]
def runAsync(): F[S]
transparent inline
def select(inline pf: PartialFunction[Any, S]): S
def setTimeout(timeout: FiniteDuration, action: Try[FiniteDuration] => F[S]): Unit
def step(): F[S]

Inherited methods

transparent inline
def run(): S

Concrete fields

val waitState: AtomicInteger

instance of select group created for call of select. 0 - free 1 - now processes 2 - expired

instance of select group created for call of select. 0 - free 1 - now processes 2 - expired

Source
SelectGroup.scala