bquarp v0.3.0 Reactivity.DSL.EventStream View Source
The DSL for distributed reactive programming, specifically, operations applicable to Event Streams.
Link to this section Summary
Functions
Applies a procedure to the values of an Event Stream without changing them. Generally used for side effects.
Filters out the Event Streams values that do not satisfy the given predicate.
Creates an Event Stream from a plain Observable.
Creates an Event Stream from a Signal Observable and tags it with the given guarantees.
Transforms the Event Stream into a Behaviour.
Checks if the given argument is an Event Stream.
Merges multiple Event Streams together The resulting Event Stream carries the events of all composed Event Streams as they arrived.
Merges multiple Event Streams together The resulting Event Stream carries the events of all composed Event Streams in a round-robin fashion.
Applies a given procedure to the values of an Event Stream and its previous result. Works in the same way as the Enum.scan function
Link to this section Functions
each(arg, proc) View Source
Applies a procedure to the values of an Event Stream without changing them. Generally used for side effects.
filter(arg, pred) View Source
filter(arg, pred, new_cg) View Source
Filters out the Event Streams values that do not satisfy the given predicate.
The expected function should take one argument, the value of an Observable and return a Boolean: true if the value should be produced, false if the value should be discarded.
If no Guarantee is provided, the merge does not alter the Event Stream Messages. The consequences of using this operator in this way are left to the developer.
If however a Guarantee is provided, it is attached to the resulting Event Stream as its new Guarantee, replacing any previous ones. This is reflected in the Message Contexts. Thus, filtering in this way can be considered to be the creation of a new source Signal with the given Guarantee in a stratified dependency graph.
from_plain_obs(obs) View Source
Creates an Event Stream from a plain Observable.
Attaches the given Guarantee to it if provided. Otherwise attaches the globally defined Guarantee, which is FIFO (the absence of any Guarantee) by default.
from_plain_obs(obs, g) View Source
from_signal_obs(sobs) View Source
Creates an Event Stream from a Signal Observable and tags it with the given guarantees.
The assumption here is that the contexts of the Signal Observable have already been attached. The primitive can be used for Guarantees with non-obvious Contexts (other than e.g. counters) the developer might come up with.
Attaches the given Guarantee to it if provided without changing the context. Otherwise attaches the globally defined Guarantee, which is FIFO (the absence of any Guarantee) by default.
from_signal_obs(sobs, gs) View Source
hold(arg) View Source
Transforms the Event Stream into a Behaviour.
is_event_stream?(arg1) View Source
Checks if the given argument is an Event Stream.
merge(signals) View Source
merge(ess, new_g) View Source
Merges multiple Event Streams together The resulting Event Stream carries the events of all composed Event Streams as they arrived.
If no Guarantee is provided, the merge does not alter the Event Stream Messages. A necessary condition for this operation to be valid then is that the given Event Streams all carry the same Guarantees. The consequences of using this operator in this way are left to the developer.
If however a Guarantee is provided, it is attached to the resulting Event Stream as its new Guarantee, replacing any previous ones. This is reflected in the Message Contexts. Thus, merging in this way can be considered to be the creation of a new source Signal with the given Guarantee in a stratified dependency graph.
rotate(ess) View Source
rotate(ess, new_cg) View Source
Merges multiple Event Streams together The resulting Event Stream carries the events of all composed Event Streams in a round-robin fashion.
Should not be used for Event Streams with known discrepancies in event occurrence frequency, since messages will accumulate and create a memory leak.
If no Guarantee is provided, the merge does not alter the Event Stream Messages. A necessary condition for this operation to be valid then is that the given Event Streams all carry the same Guarantees. The consequences of using this operator in this way are left to the developer.
If however a Guarantee is provided, it is attached to the resulting Event Stream as its new Guarantee, replacing any previous ones. This is reflected in the Message Contexts. Thus, merging in this way can be considered to be the creation of a new source Signal with the given Guarantee in a stratified dependency graph.
scan(arg, func, default \\ nil) View Source
Applies a given procedure to the values of an Event Stream and its previous result. Works in the same way as the Enum.scan function:
Enum.scan(1..10, fn(x,y) -> x + y end) => [1, 3, 6, 10, 15, 21, 28, 36, 45, 55]