object default extends RescalaInterface with ParRP
REScala has two main abstractions. rescala.default.Event and rescala.default.Signal commonly referred to as reactives. Use rescala.default.Var to create signal sources and rescala.default.Evt to create event sources.
Events and signals can be created from other reactives by using combinators, signals additionally can be created using rescala.default.Signal expressions.
- Grouped
- Alphabetic
- By Inheritance
- default
- ParRP
- Levelbased
- Twoversion
- RescalaInterface
- Operators
- ObserveBundle
- Sources
- FlattenApi
- FlattenCollectionCompat
- SignalBundle
- SignalCompatBundle
- EventBundle
- EventCompatBundle
- ReadableMacroBundle
- Core
- DefaultImplementations
- AnyRef
- Any
- Hide All
- Show All
- Public
- Protected
Type Members
- trait EventCompat[+T] extends operator.Operators.ReadableMacro[Option[T]]
- Definition Classes
- EventCompatBundle
- trait SignalCompat[+T] extends operator.Operators.ReadableMacro[T]
- Definition Classes
- SignalCompatBundle
- class UserDefinedFunction[+T, Dep, Cap] extends AnyRef
- Definition Classes
- SignalCompatBundle
- trait AccessHandler extends AnyRef
- Definition Classes
- Core
- final class AdmissionTicket extends AnyRef
Enables reading of the current value during admission.
Enables reading of the current value during admission. Keeps track of written sources internally.
- Definition Classes
- Core
- abstract class Base[V] extends ReSource
Base implementation for reactives, with Derived for scheduling, together with a ReName and containing a State
- final class CreationTicket extends AnyRef
Enables the creation of other reactives
Enables the creation of other reactives
- Definition Classes
- Core
- Annotations
- @implicitNotFound()
- trait Derived extends ReSource
A reactive value is something that can be reevaluated
A reactive value is something that can be reevaluated
- Definition Classes
- Core
- trait Disconnectable extends AnyRef
Essentially a kill switch, that will remove the reactive at some point.
Essentially a kill switch, that will remove the reactive at some point.
- Definition Classes
- Core
- trait DisconnectableImpl extends Derived with Disconnectable
Removes the reactive instead of its next normal reevaluation.
Removes the reactive instead of its next normal reevaluation. This makes use of the fact, that all reactives are technically dynamic reactives, and removing incoming dependencies is always kinda safe, as long as we are sure we no longer care!
- Definition Classes
- Core
- trait DynamicScope extends AnyRef
Provides the capability to look up transactions in the dynamic scope.
Provides the capability to look up transactions in the dynamic scope.
- Definition Classes
- Core
- abstract class DynamicTicket extends StaticTicket
User facing low level API to access values in a dynamic context.
User facing low level API to access values in a dynamic context.
- Definition Classes
- Core
- trait InitialChange extends AnyRef
Encapsulates an action changing a single source.
Encapsulates an action changing a single source.
- Definition Classes
- Core
- trait Initializer extends AnyRef
An initializer is the glue between that binds the creation of the reactive from the operator and scheduler side together.
An initializer is the glue between that binds the creation of the reactive from the operator and scheduler side together. The operator provides the logic to wrap a state and the scheduler provides the implementation of that state. This is where the two are joined. After that, the new reactive may have to be initialized.
- Definition Classes
- Core
- sealed trait LowPriorityScopeImplicits extends AnyRef
If no Fitting Ticket is found, then these implicits will search for a DynamicScope, creating the reactives outside of any turn.
If no Fitting Ticket is found, then these implicits will search for a DynamicScope, creating the reactives outside of any turn.
- Definition Classes
- Core
- trait Observation extends AnyRef
Records side effects for later execution.
Records side effects for later execution.
- Definition Classes
- Core
- trait ReSource extends AnyRef
Source of (reactive) values.
Source of (reactive) values.
- Definition Classes
- Core
- trait ReadAs[+A] extends ReSource
Common macro accessors for rescala.operator.SignalBundle.Signal and rescala.operator.EventBundle.Event
Common macro accessors for rescala.operator.SignalBundle.Signal and rescala.operator.EventBundle.Event
- A
return type of the accessor
- Definition Classes
- Core
- final class ReevTicket[V] extends DynamicTicket with Result[V]
ReevTicket is given to the Derived reevaluate method and allows to access other reactives.
ReevTicket is given to the Derived reevaluate method and allows to access other reactives. The ticket tracks return values, such as dependencies, the value, and if the value should be propagated. Such usages make it unsuitable as an API for the user, where StaticTicket or DynamicTicket should be used instead.
- Definition Classes
- Core
- trait Result[T] extends AnyRef
Result of a reevaluation
Result of a reevaluation
- Definition Classes
- Core
- trait Scheduler extends DynamicScope
Scheduler that defines the basic data-types available to the user and creates turns for propagation handling.
Scheduler that defines the basic data-types available to the user and creates turns for propagation handling. Note: This should NOT extend DynamicScope, but did so in the past and there are too many tests that assume so ...
- Definition Classes
- Core
- Annotations
- @implicitNotFound()
- trait SchedulerImpl[Tx <: Transaction] extends DynamicScope with Scheduler
- Definition Classes
- Core
- case class ScopeSearch(self: Either[Transaction, DynamicScope]) extends Product with Serializable
- Definition Classes
- Core
- sealed abstract class StaticTicket extends AnyRef
User facing low level API to access values in a static context.
User facing low level API to access values in a static context.
- Definition Classes
- Core
- trait Transaction extends AnyRef
A transaction (or maybe transaction handle would be the better term) is available from reevaluation and admission tickets.
A transaction (or maybe transaction handle would be the better term) is available from reevaluation and admission tickets. That is, everywhere during a transaction, you can read reactives, but also create them. The reading values is core to any reactive propagation. But creating reactives using the Initializer is a liability to the scheduler, but a superpower to the operators. Its a classical tradeoff, but it would be better to not make this choice by default, that is, reactive creation should be limited such that we can experiment with schedulers that do not have this liability.
- Definition Classes
- Core
- type State[V] = ParRPState[V]
In case you wondered why everything in REScala is in these weird bundle traits, this is why.
In case you wondered why everything in REScala is in these weird bundle traits, this is why. The ReSource below depends on some abstract state, which is defined by the concrete scheduler implementations. As basically everything else references ReSources, everything must be bundled together. This is good for users, because they get strong guarantees about the used correctness, and the API is still OK. Its terrible for us, because the Scala Incremental compiler does not really work anymore.
- Definition Classes
- ParRP → Levelbased → Twoversion → Core
- trait ReadableMacro[+A] extends ReadAs[A] with MacroAccess[A, ReadAs[A]]
- Definition Classes
- ReadableMacroBundle
- class ChangeEventImpl[T] extends Operators.Base[(Pulse[T], Pulse[Diff[T]])] with Operators.Derived with Operators.Event[Diff[T]] with Operators.DisconnectableImpl
- Definition Classes
- DefaultImplementations
- abstract class DerivedImpl[T] extends Operators.Base[Pulse[T]] with Operators.Derived with Operators.DisconnectableImpl
- Definition Classes
- DefaultImplementations
- class EventImpl[T] extends Operators.DerivedImpl[T] with Operators.Event[T]
- Definition Classes
- DefaultImplementations
- class SignalImpl[T] extends Operators.DerivedImpl[T] with Operators.Signal[T]
- Definition Classes
- DefaultImplementations
- trait Event[+T] extends Operators.EventCompat[T] with Operators.Disconnectable
Events only propagate a value when they are changing, when the system is at rest, events have no values.
Events only propagate a value when they are changing, when the system is at rest, events have no values.
Note: We hide implicit parameters of the API in the documentation. They are used to ensure correct creation, and you normally do not have to worry about them, except if you accidentally call the implicit parameter list, in which cas you may get cryptic errors. This is a scala limitation. We also hide the internal state parameter of passed and returned events.
- T
Value type of the event occurrences.
- Definition Classes
- EventBundle
- trait Flatten[-A, R] extends AnyRef
- Definition Classes
- FlattenApi
- Annotations
- @implicitNotFound()
- trait ObserveInteract extends Observation
- Definition Classes
- ObserveBundle
- trait Signal[+T] extends Operators.Disconnectable with Operators.SignalCompat[T]
Time changing value derived from the dependencies.
Time changing value derived from the dependencies.
- T
Type stored by the signal
- Definition Classes
- SignalBundle
- class Evt[T] extends Operators.Base[Pulse[T]] with Operators.Source[T] with Operators.Event[T]
Source events with imperative occurrences
Source events with imperative occurrences
- T
Type returned when the event fires
- Definition Classes
- Sources
- trait Source[T] extends Operators.ReSource
- Definition Classes
- Sources
- class Var[A] extends Operators.Base[Pulse[A]] with Operators.Source[A] with Operators.Signal[A] with Operators.ReadAs[A]
Source signals with imperatively updates.
- trait ParRPInterTurn extends AnyRef
- Definition Classes
- ParRP
- class ParRPState[V] extends LevelState[V]
- Definition Classes
- ParRP
- class ParRPTransaction extends LevelBasedTransaction with ParRPInterTurn
- Definition Classes
- ParRP
- trait LevelBasedTransaction extends TwoVersionTransactionImpl with Evaluator with Initializer
Further implementation of level-based propagation based on the common propagation implementation.
Further implementation of level-based propagation based on the common propagation implementation.
- Definition Classes
- Levelbased
- class LevelState[V] extends TwoVersionState[V]
- Definition Classes
- Levelbased
- trait TwoVersionScheduler[Tx <: TwoVersionTransaction] extends SchedulerImpl[Tx]
Implementation of the turn handling defined in the Engine trait
Implementation of the turn handling defined in the Engine trait
- Tx
Transaction type used by the scheduler
- Definition Classes
- Twoversion
- abstract class TwoVersionState[V] extends AnyRef
State that implements both the buffered pulse and the buffering capabilities itself.
State that implements both the buffered pulse and the buffering capabilities itself.
- Definition Classes
- Twoversion
- sealed trait TwoVersionTransaction extends Transaction
Abstract propagation definition that defines phases for reactive propagation through dependent reactive elements.
Abstract propagation definition that defines phases for reactive propagation through dependent reactive elements.
- Definition Classes
- Twoversion
- trait TwoVersionTransactionImpl extends TwoVersionTransaction
Basic implementation of the most fundamental propagation steps as defined by AbstractPropagation.
Basic implementation of the most fundamental propagation steps as defined by AbstractPropagation. Only compatible with spore definitions that store a pulse value and support graph operations.
- Definition Classes
- Twoversion
Value Members
- object Event
Similar to rescala.compat.SignalCompatBundle.Signal expressions, but resulting in an event.
Similar to rescala.compat.SignalCompatBundle.Signal expressions, but resulting in an event. Accessed events return options depending on whether they fire or not, and the complete result of the expression is an event as well.
- Definition Classes
- EventCompatBundle
- See also
- object Signal
A signal expression can be used to create signals accessing arbitrary other signals.
A signal expression can be used to create signals accessing arbitrary other signals. Use the apply method on a signal to access its value inside of a signal expression.
val a: Signal[Int] val b: Signal[Int] val result: Signal[String] = Signal { a().toString + b().toString}
- Definition Classes
- SignalCompatBundle
- object UserDefinedFunction
- Definition Classes
- SignalCompatBundle
- object CreationTicket
- Definition Classes
- Core
- object ScopeSearch extends LowPriorityScopeImplicits with Serializable
As reactives can be created during propagation, any Ticket can be converted to a creation ticket.
As reactives can be created during propagation, any Ticket can be converted to a creation ticket.
- Definition Classes
- Core
- final def !=(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
- final def ##: Int
- Definition Classes
- AnyRef → Any
- final def ==(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
- final def Evt[A]()(implicit ticket: CreationTicket): Evt[A]
- Definition Classes
- Sources
- implicit def OnEv[T](e: Event[T]): OnEv[T]
- Definition Classes
- RescalaInterface
- implicit def OnEvs[T](e: => Seq[Event[T]]): OnEvs[T]
- Definition Classes
- RescalaInterface
- final def asInstanceOf[T0]: T0
- Definition Classes
- Any
- def clone(): AnyRef
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.CloneNotSupportedException]) @native() @IntrinsicCandidate()
- final def eq(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- def equals(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef → Any
- def firstFiringEvent[B, T[U] <: IterableOps[U, T, T[U]], Evnt[A1] <: Event[A1]](implicit ticket: CreationTicket): Flatten[Signal[T[Evnt[B]]], Event[B]]
Flatten a Signal[Traversable[Event[B]\]\] into a Event[B].
Flatten a Signal[Traversable[Event[B]\]\] into a Event[B]. The new Event fires the value of any inner firing Event. If multiple inner Events fire, the first one in iteration order is selected.
- Definition Classes
- FlattenCollectionCompat
- implicit def flattenImplicitForarraySignals[B, Sig[U] <: Signal[U]](implicit arg0: ClassTag[B], ticket: CreationTicket): Flatten[Signal[Array[Sig[B]]], Signal[Array[B]]]
Flatten a Signal[Array[Signal[B]\]\] into a Signal[Array[B]\] where the new Signal updates whenever any of the inner or the outer signal updates
Flatten a Signal[Array[Signal[B]\]\] into a Signal[Array[B]\] where the new Signal updates whenever any of the inner or the outer signal updates
- Definition Classes
- FlattenApi
- implicit def flattenImplicitForevent[A, B, Evnt[A1] <: Event[A1]](implicit ticket: CreationTicket): Flatten[Signal[Evnt[B]], Event[B]]
Flatten a Signal[Event[B]]\] into a Event[B] where the new Event fires whenever the current inner event fires
Flatten a Signal[Event[B]]\] into a Event[B] where the new Event fires whenever the current inner event fires
- Definition Classes
- FlattenApi
- implicit def flattenImplicitForoption[A, B](implicit ticket: CreationTicket): Flatten[Event[Option[B]], Event[B]]
Flatten a Event[Option[B]\] into a Event[B] that fires whenever the inner option is defined.
Flatten a Event[Option[B]\] into a Event[B] that fires whenever the inner option is defined.
- Definition Classes
- FlattenApi
- implicit def flattenImplicitForoptionSignal[B, Sig[U] <: Signal[U]](implicit ticket: CreationTicket): Flatten[Signal[Option[Sig[B]]], Signal[Option[B]]]
Flatten a Signal[Option[Signal[B]\]\] into a Signal[Option[B]\] where the new Signal updates whenever any of the inner or the outer signal updates
Flatten a Signal[Option[Signal[B]\]\] into a Signal[Option[B]\] where the new Signal updates whenever any of the inner or the outer signal updates
- Definition Classes
- FlattenApi
- implicit def flattenImplicitForsignal[B](implicit ticket: CreationTicket): Flatten[Signal[Signal[B]], Signal[B]]
Flatten a Signal[Signal[B]\] into a Signal[B] that changes whenever the outer or inner signal changes.
Flatten a Signal[Signal[B]\] into a Signal[B] that changes whenever the outer or inner signal changes.
- Definition Classes
- FlattenApi
- implicit def flattenImplicitFortraversableSignals[B, T[U] <: IterableOps[U, T, T[U]], Sig[A1] <: Signal[A1]](implicit ticket: CreationTicket): Flatten[Signal[T[Sig[B]]], Signal[T[B]]]
Flatten a Signal[Traversable[Signal[B]\]\] into a Signal[Traversable[B]\] where the new Signal updates whenever any of the inner or the outer signal updates
Flatten a Signal[Traversable[Signal[B]\]\] into a Signal[Traversable[B]\] where the new Signal updates whenever any of the inner or the outer signal updates
- Definition Classes
- FlattenCollectionCompat
- final def getClass(): Class[_ <: AnyRef]
- Definition Classes
- AnyRef → Any
- Annotations
- @native() @IntrinsicCandidate()
- def hashCode(): Int
- Definition Classes
- AnyRef → Any
- Annotations
- @native() @IntrinsicCandidate()
- implicit def implicitScheduler: Scheduler
- Definition Classes
- RescalaInterface
- final def isInstanceOf[T0]: Boolean
- Definition Classes
- Any
- final def ne(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- final def notify(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native() @IntrinsicCandidate()
- final def notifyAll(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native() @IntrinsicCandidate()
- def parrpWithBackoff(backOff: () => Backoff): Scheduler
- Definition Classes
- ParRP
- val scheduler: Scheduler
- Definition Classes
- default → RescalaInterface
- final def synchronized[T0](arg0: => T0): T0
- Definition Classes
- AnyRef
- def toString(): String
- Definition Classes
- RescalaInterface → AnyRef → Any
- def transaction[R](initialWrites: ReSource*)(admissionPhase: (AdmissionTicket) => R): R
Executes a transaction.
Executes a transaction.
- R
Result type of the admission function
- initialWrites
All inputs that might be changed by the transaction
- admissionPhase
An admission function that may rescala.operator.Sources.Evt.admit / rescala.operator.Sources.Var.admit arbitrary input changes that will be applied as an atomic transaction at the end.
- returns
Result of the admission function
- Definition Classes
- RescalaInterface
transaction(a, b){ implicit at => a.set(5); b.set(1); at.now(a) }
Example: - def transactionWithWrapup[I, R](iw: ReSource*)(ap: (AdmissionTicket) => I)(wrapUp: (I, Transaction) => R): R
Executes a transaction with WrapUpPhase.
Executes a transaction with WrapUpPhase.
- Definition Classes
- RescalaInterface
- See also
transaction
- def traversableOfAllOccuringEventValues[B, T[U] <: IterableOps[U, T, T[U]], Evnt[A1] <: Event[A1]](implicit ticket: CreationTicket): Flatten[Signal[T[Evnt[B]]], Event[T[Option[B]]]]
Flatten a Signal[Traversable[Event[B]\]\] into a Event[Traversable[Option[B]\]\] where the new Event fires whenever any of the inner events fire
Flatten a Signal[Traversable[Event[B]\]\] into a Event[Traversable[Option[B]\]\] where the new Event fires whenever any of the inner events fire
- Definition Classes
- FlattenCollectionCompat
- final def wait(arg0: Long, arg1: Int): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
- final def wait(arg0: Long): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
- final def wait(): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
- object Events
- Definition Classes
- EventBundle
- object Observe
observers are normale reactives that are configured by a function that converts the value of the input into an ObserveInteract
observers are normale reactives that are configured by a function that converts the value of the input into an ObserveInteract
- Definition Classes
- ObserveBundle
- object Signals
Functions to construct signals, you probably want to use signal expressions in rescala.interface.RescalaInterface.Signal for a nicer API.
Functions to construct signals, you probably want to use signal expressions in rescala.interface.RescalaInterface.Signal for a nicer API.
- Definition Classes
- SignalBundle
- object Var
Creates new Vars
Inherited from ParRP
Inherited from Levelbased
Inherited from Twoversion
Inherited from RescalaInterface
Inherited from Operators
Inherited from ObserveBundle
Inherited from Sources
Inherited from FlattenApi
Inherited from FlattenCollectionCompat
Inherited from SignalBundle
Inherited from SignalCompatBundle
Inherited from EventBundle
Inherited from EventCompatBundle
Inherited from ReadableMacroBundle
Inherited from Core
Inherited from DefaultImplementations
Inherited from AnyRef
Inherited from Any
Create new reactives
Update multiple reactives
Advanced functions used when extending REScala
Methods and type aliases for advanced usages, these are most relevant to abstract over multiple scheduler implementations.