public interface ExecutionContext
Modifier and Type | Method and Description |
---|---|
<T,R> Field<R> |
buildField(java.util.function.Function<T,R> computeValue,
T localValue)
Builds a new
Field , fetching data from all the aligned neighbors. |
<T,R> Field<R> |
buildFieldDeferred(java.util.function.Function<T,R> computeValue,
T currentLocal,
java.util.function.Supplier<T> toBeSent)
Builds a new
Field , fetching data from all the aligned neighbors. |
void |
commit()
Called just after the VM is executed, to finalize information of the
execution for the environment.
|
java.lang.Number |
getCurrentTime() |
java.lang.Number |
getDeltaTime() |
DeviceUID |
getDeviceUID() |
ExecutionEnvironment |
getExecutionEnvironment() |
<S> S |
getPersistent(java.util.function.Supplier<S> ifAbsent)
Gets a value that survives across rounds.
|
java.lang.Object |
getVariable(Reference reference)
Look up the value of a variable from the local environment.
|
void |
newCallStackFrame(byte... id) |
void |
newCallStackFrame(int... id) |
double |
nextRandomDouble()
Obtain a system-independent (pseudo)random number.
|
void |
putMultipleVariables(java.util.Map<Reference,?> map)
Pushes multiple variables.
|
void |
putVariable(Reference name,
java.lang.Object value)
Puts a variable value, overwriting the previous one, if any.
|
ExecutionContext |
restrictDomain(Field<?> f)
Give a field, returns a new
ExecutionContext whose domain is the same of the field one. |
void |
returnFromCallFrame()
returns from the last frame.
|
<T> T |
runInNewStackFrame(int id,
java.util.function.Function<ExecutionContext,T> operation) |
void |
setGloballyAvailableReferences(java.util.Map<Reference,?> knownFunctions)
Used internally to support first-class functions by make the functions of
a program accessible for reflection at runtime.
|
void |
setPersistent(java.lang.Object o)
Stores a value to be used in future rounds via getPersistent.
|
void |
setup()
Called just before the VM is executed, to enable and preparations needed
in the environment.
|
<T,R> Field<R> buildField(java.util.function.Function<T,R> computeValue, T localValue)
Field
, fetching data from all the aligned neighbors.
A neighbor is considered to be aligned it it has reached the exact same
DefaultTimeEfficientCodePath
. The field will always contain at least one value,
namely the value of the local device.T
- the type of the inputR
- the type of the outputcomputeValue
- a function that will be applied to localValue and the
equivalents shared from neighbors in the process of
constructing this field: the field consists of the values
returned from applying computeValue to each of device's valuelocalValue
- the local value for this fieldField
containing the local device value and the
values for any of the aligned neighbors<T,R> Field<R> buildFieldDeferred(java.util.function.Function<T,R> computeValue, T currentLocal, java.util.function.Supplier<T> toBeSent)
Field
, fetching data from all the aligned neighbors.
A neighbor is considered to be aligned it it has reached the exact same
DefaultTimeEfficientCodePath
. The field will always contain at least one value,
namely the value of the local device. The deferred version does not immediately schedule
the local value for being sent away. Rather, it schedules the provided Supplier
to be executed at the end of the round for obtaining the value to be shared. This
function is the base upon which the ShareCall
is built.T
- the type of the inputR
- the type of the outputcomputeValue
- a function that will be applied to localValue and the
equivalents shared from neighbors in the process of
constructing this field: the field consists of the values
returned from applying computeValue to each of device's valuecurrentLocal
- the value to be used as local for this fieldtoBeSent
- a Supplier
which will be used to compute the local
value for this field that will get exported at the end of the roundField
containing the local device value and the
values for any of the aligned neighborsvoid commit()
java.lang.Number getCurrentTime()
java.lang.Number getDeltaTime()
DeviceUID getDeviceUID()
ExecutionEnvironment getExecutionEnvironment()
ExecutionEnvironment
<S> S getPersistent(java.util.function.Supplier<S> ifAbsent)
S
- type of the valueifAbsent
- replacementjava.lang.Object getVariable(Reference reference)
reference
- The variable to be looked upvoid newCallStackFrame(byte... id)
id
- stack frame typevoid newCallStackFrame(int... id)
id
- stack frame type<T> T runInNewStackFrame(int id, java.util.function.Function<ExecutionContext,T> operation)
T
- the return typeid
- stack frame typeoperation
- the operation to run in the new contextdouble nextRandomDouble()
void putMultipleVariables(java.util.Map<Reference,?> map)
map
- the variables to pushvoid putVariable(Reference name, java.lang.Object value)
name
- variable referencevalue
- variable valueExecutionContext restrictDomain(Field<?> f)
ExecutionContext
whose domain is the same of the field one.f
- the fieldvoid returnFromCallFrame()
void setGloballyAvailableReferences(java.util.Map<Reference,?> knownFunctions)
knownFunctions
- Collection of accessible functions, associating function name
and value.void setPersistent(java.lang.Object o)
o
- the value to storevoid setup()