actor() = term()
args() = list()
crdt() = type:crdt()
func() = atom()
id() = binary() | {binary(), type()}
metadata() = orddict:orddict()
not_found() = {error, not_found}
operation() = {atom(), value()} | {atom(), value(), value()} | atom()
pending_threshold() = {threshold, read | wait, pid(), type(), threshold()}
store() = ets:tid() | atom() | reference() | pid()
threshold() = value() | {strict, value()}
type() = term()
value() = term()
var() = {id(), type(), metadata(), value()}
| bind/3 | Define a dataflow variable to be bound a value. |
| bind/4 | |
| bind_to/3 | Define a dataflow variable to be bound to another dataflow variable. |
| bind_to/4 | Define a dataflow variable to be bound to another dataflow variable. |
| bind_to/5 | |
| bind_var/3 | |
| declare/1 | Declare a dataflow variable in a provided by identifer. |
| declare/2 | Declare a dataflow variable, as a given type. |
| declare/3 | Declare a dataflow variable in a provided by identifer. |
| declare/4 | Declare a dataflow variable in a provided by identifer. |
| declare/5 | Declare a dataflow variable in a provided by identifer. |
| declare_dynamic/4 | Declare a dynamic variable in a provided by identifer. |
| filter/4 | Filter values from one lattice into another. |
| filter/6 | Filter values from one lattice into another. |
| fold/4 | Fold values from one lattice into another. |
| fold/6 | Fold values from one lattice into another. |
| intersection/4 | Compute the intersection of two sets. |
| intersection/7 | Compute the intersection of two sets. |
| map/4 | Map values from one lattice into another. |
| map/6 | Map values from one lattice into another. |
| product/4 | Compute the cartesian product of two sets. |
| product/7 | Compute the cartesian product of two sets. |
| query/2 | Return the current value of a CRDT. |
| read/2 | Perform a read for a particular identifier. |
| read/3 | Perform a monotonic read read for a particular identifier. |
| read/6 | Perform a read (or monotonic read) for a particular identifier. |
| read_any/2 | Perform a monotonic read for a series of given idenfitiers -- first response wins. |
| read_var/3 | |
| receive_delta/2 | When the delta interval is arrived, bind it with the existing object. |
| receive_value/2 | |
| reply_to_all/2 | Given a group of processes which are blocking on reads, notify them of bound values or met thresholds. |
| reply_to_all/3 | Given a group of processes which are blocking on reads, notify them of bound values or met thresholds. |
| stream/3 | Stream values out of the Lasp system; using the values from this stream can result in observable nondeterminism. |
| thread/4 | Spawn a function. |
| union/4 | Compute the union of two sets. |
| union/7 | Compute the union of two sets. |
| update/4 | Update a dataflow variable given an operation. |
| update/6 | |
| update_metadata/5 | Update metadata. |
| wait_needed/2 | Pause execution until value requested with given threshold. |
| wait_needed/3 | Pause execution until value requested with given threshold. |
| wait_needed/6 | Callback wait_needed function for lasp_vnode, where we change the reply and blocking replies. |
bind(Id::id(), Value::value(), Store::store()) -> {ok, var()} | not_found()
Define a dataflow variable to be bound a value.
bind(Id, Value, MetadataFun, Store) -> any()
Define a dataflow variable to be bound to another dataflow variable.
Define a dataflow variable to be bound to another dataflow variable.
This version, performs a partial bind to another dataflow variable.
FetchFun is used to specify how to find the target identifier,
given it is located in another data store.
FromPid is sent a message with the target identifiers value,
if the target identifier is already bound.
bind_to(AccId, Id, Store, BindFun, ReadFun) -> any()
bind_var(Id, Value, Store) -> any()
Declare a dataflow variable in a provided by identifer.
Declare a dataflow variable, as a given type.
Declare a dataflow variable in a provided by identifer.
Declare a dataflow variable in a provided by identifer.
declare(Id::id(), Type::type(), MetadataFun::function(), MetadataNew::any(), Store::store()) -> {ok, var()}
Declare a dataflow variable in a provided by identifer.
Declare a dynamic variable in a provided by identifer.
Filter values from one lattice into another.
Applies the givenFunction as a filter over the items in Id,
placing the result in AccId, both of which need to be declared
variables.
filter(Id::id(), Function::function(), AccId::id(), Store::store(), BindFun::function(), ReadFun::function()) -> {ok, pid()}
Filter values from one lattice into another.
Applies the given Function as a filter over the items in Id,
placing the result in AccId, both of which need to be declared
variables.
filter/4, however, provides an override
function for the BindFun, which is responsible for binding the
result, for instance, when it's located in another table.
Fold values from one lattice into another.
Applies the givenFunction as a fold over the items in Id,
placing the result in AccId, both of which need to be declared
variables.
fold(Id::id(), Function::function(), AccId::id(), Store::store(), BindFun::function(), ReadFun::function()) -> {ok, pid()}
Fold values from one lattice into another.
Applies the given Function as a fold over the items in Id,
placing the result in AccId, both of which need to be declared
variables.
fold/4, however, provides an override
function for the BindFun, which is responsible for binding the
result, for instance, when it's located in another table.
Compute the intersection of two sets.
Computes the intersection of two sets and bind the result to a third.intersection(Left::id(), Right::id(), AccId::id(), Store::store(), BindFun::function(), ReadLeftFun::function(), ReadRightFun::function()) -> {ok, pid()}
Compute the intersection of two sets.
Computes the intersection of two sets and bind the result to a third.
Similar tointersection/4, however, provides an override
function for the BindFun, which is responsible for binding the
result, for instance, when it's located in another table.
Map values from one lattice into another.
Applies the givenFunction as a map over the items in Id,
placing the result in AccId, both of which need to be declared
variables.
map(Id::id(), Function::function(), AccId::id(), Store::store(), BindFun::function(), ReadFun::function()) -> {ok, pid()}
Map values from one lattice into another.
Applies the given Function as a map over the items in Id,
placing the result in AccId, both of which need to be declared
variables.
map/4, however, provides an override
function for the BindFun, which is responsible for binding the
result, for instance, when it's located in another table.
Compute the cartesian product of two sets.
Computes the cartestian product of two sets and bind the result to a third.product(Left::id(), Right::id(), AccId::id(), Store::store(), BindFun::function(), ReadLeftFun::function(), ReadRightFun::function()) -> {ok, pid()}
Compute the cartesian product of two sets.
Computes the cartestian product of two sets and bind the result to a third.
Similar toproduct/4, however, provides an override
function for the BindFun, which is responsible for binding the
result, for instance, when it's located in another table.
Return the current value of a CRDT.
Same as query_var, but tracked in the dag.Perform a read for a particular identifier.
Given anId, perform a blocking read until the variable is
bound.
Perform a monotonic read read for a particular identifier.
Given an Id, perform a blocking read until the variable is
bound.
Threshold has been reached.
As read/6 runs inside a lasp process, we have to block
outside, or else it may get killed when used in combination
with other lasp processes (for example, when used as the read
function of another lasp process).
read(Id::id(), Threshold::value(), Store::store(), Self::pid(), ReplyFun::function(), BlockingFun::function()) -> {ok, var()} | not_found() | block
Perform a read (or monotonic read) for a particular identifier.
Same as read_var, but tracked in the dag.Perform a monotonic read for a series of given idenfitiers -- first response wins.
read_var(Id, Threshold, Store) -> any()
receive_delta(Store::store(), X2::{delta_send, node(), value(), function(), function()} | {delta_ack, id(), node(), non_neg_integer()}) -> ok | error
When the delta interval is arrived, bind it with the existing object. If the object does not exist, declare it.
receive_value(Store::store(), X2::{state_send, node(), value(), function(), function()}) -> {ok, crdt()}
reply_to_all(List::[pid() | pending_threshold()], Result::term()) -> {ok, [pending_threshold()]}
Given a group of processes which are blocking on reads, notify them of bound values or met thresholds.
reply_to_all(T::[pid() | pending_threshold()], StillWaiting0::[pending_threshold()], Result::term()) -> {ok, [pending_threshold()]}
Given a group of processes which are blocking on reads, notify them of bound values or met thresholds.
stream(Id, Function, Store) -> any()
Stream values out of the Lasp system; using the values from this stream can result in observable nondeterminism.
Spawn a function.
Spawn a process executingModule:Function(Args).
Compute the union of two sets.
Computes the union of two sets and bind the result to a third.union(Left::id(), Right::id(), AccId::id(), Store::store(), BindFun::function(), ReadLeftFun::function(), ReadRightFun::function()) -> {ok, pid()}
Compute the union of two sets.
Computes the union of two sets and bind the result to a third.
Similar tounion/4, however, provides an override
function for the BindFun, which is responsible for binding the
result, for instance, when it's located in another table.
update(Id::id(), Operation::operation(), Actor::actor(), Store::store()) -> {ok, var()} | not_found()
Update a dataflow variable given an operation.
Similar to update/5.
Id and update it given the provided
Operation, which should be valid for the type of CRDT stored
at the given Id.
update(Id::id(), Operation::operation(), Actor::actor(), MetadataFun::function(), MetadataFunDeclare::function(), Store::store()) -> {ok, var()} | not_found()
update_metadata(Id, Actor, MetadataFun, MetadataFunDeclare, Store) -> any()
Update metadata.
wait_needed(Id::id(), Store::store()) -> {ok, threshold()}
Pause execution until value requested with given threshold.
Pause execution of calling thread until a read operation is issued for the givenId. Used to introduce laziness into a
computation.
wait_needed(Id::id(), Threshold::threshold(), Store::store()) -> {ok, threshold()}
Pause execution until value requested with given threshold.
Pause execution of calling thread until a read operation is
issued for the given Id. Used to introduce laziness into a
computation.
Threshold has been requested.
wait_needed(Id::id(), Threshold::threshold(), Store::store(), Self::pid(), ReplyFun::function(), BlockingFun::function()) -> {ok, threshold()}
Callback wait_needed function for lasp_vnode, where we change the reply and blocking replies.
Similar to wait_needed/2.
BlockingFun is used to override the handling of waiting for a
read operation to trigger on something that is waiting (lazy).
ReplyFun is used to override the function which is used to
notify waiting processes, for instance, if they are running on
another node.
Threshold has been requested.
Generated by EDoc