public interface Environment<BGS extends simudyne.core.graph.BaseGlobalState>
| Modifier and Type | Method and Description |
|---|---|
default <T extends Message> |
deferMessages(java.lang.Class<T> clazz)
Postpone messages of the given type to be handled later.
|
void |
deferMessages(java.util.List<Message> messages)
Postpone messages to be handled later.
|
void |
deferTask(java.util.function.Consumer<Vertex<? extends simudyne.core.graph.BaseGlobalState>> dataInjector)
Postpone the application of some Consumer until the end of the phase.
|
void |
deliverMessage(Message message) |
AgentContext |
getContext() |
DoubleAccumulatorView |
getDoubleAccumulator(java.lang.String name)
Gets a previously created Double Accumulator
|
BGS |
getGlobals()
Get a global value that the system has broadcast to all vertices.
|
LongAccumulatorView |
getLongAccumulator(java.lang.String name)
Gets a previously created Long Accumulator
|
java.util.Iterator<? extends Message> |
getMessageIterator() |
default <T extends Message> |
getMessageOfType(java.lang.Class<T> clazz) |
<T extends Message> |
getMessagesOfType(java.lang.Class<T> clazz) |
long |
getMessageTag() |
int |
getPhaseCount() |
default <T extends Message> |
hasMessageOfType(java.lang.Class<T> clazz) |
default <T extends Message> |
hasMessageOfType(java.lang.Class<T> clazz,
java.util.function.Consumer<T> handler)
Query the vertex inbox for a message of the given type.
|
default <T extends Message> |
hasMessagesOfType(java.lang.Class<T> clazz) |
default <T extends Message> |
hasMessagesOfType(java.lang.Class<T> clazz,
java.util.function.Consumer<java.util.List<T>> handler)
Query the vertex inbox for messages of the given type.
|
default <M extends Message> |
send(java.lang.Class<M> clazz)
send(Class, Consumer) without a data injector so no initial function is run
for messages. |
default <M extends Message.Boolean> |
send(java.lang.Class<M> clazz,
boolean messageBody)
Create a
Messaging object for sending messages with single boolean field. |
<M extends Message> |
send(java.lang.Class<M> clazz,
java.util.function.Consumer<M> dataInjector)
Create a
Messaging object for sending messages. |
default <M extends Message.Double> |
send(java.lang.Class<M> clazz,
double messageBody)
Create a
Messaging object for sending messages with single double field. |
default <M extends Message.Float> |
send(java.lang.Class<M> clazz,
float messageBody)
Create a
Messaging object for sending messages with single float field. |
default <M extends Message.Integer> |
send(java.lang.Class<M> clazz,
int messageBody)
Create a
Messaging object for sending messages with single int field. |
default <M extends Message.Long> |
send(java.lang.Class<M> clazz,
long messageBody)
Create a
Messaging object for sending messages with single long field. |
default <M extends Message.Object<T>,T> |
send(java.lang.Class<M> clazz,
T messageBody)
Create a
Messaging object for sending messages with single field. |
default <M extends OrderedMessage> |
sendOrdered(java.lang.Class<M> clazz) |
default <M extends OrderedMessage.Boolean> |
sendOrdered(java.lang.Class<M> clazz,
boolean messageBody) |
default <M extends OrderedMessage> |
sendOrdered(java.lang.Class<M> clazz,
java.util.function.Consumer<M> dataInjector) |
default <M extends OrderedMessage.Double> |
sendOrdered(java.lang.Class<M> clazz,
double messageBody) |
default <M extends OrderedMessage.Float> |
sendOrdered(java.lang.Class<M> clazz,
float messageBody) |
default <M extends OrderedMessage.Integer> |
sendOrdered(java.lang.Class<M> clazz,
int messageBody) |
default <M extends OrderedMessage.Long> |
sendOrdered(java.lang.Class<M> clazz,
long messageBody) |
default <M extends OrderedMessage.Object<T>,T> |
sendOrdered(java.lang.Class<M> clazz,
T messageBody) |
void |
setMessageTag(long tag)
Set the value of the message tag which will be embedded in each message sent by this
Environment.
|
<V extends Vertex<BGS>> |
spawn(java.lang.Class<V> vertexType) |
<V extends Vertex<BGS>> |
spawn(java.lang.Class<V> vertexType,
SerializableConsumer<V> dataInjector)
Creates a new agent.
|
void |
stop()
Allow an vertex to stop it self.
|
int getPhaseCount()
void setMessageTag(long tag)
BGS getGlobals()
default <M extends Message> Messaging<M> send(java.lang.Class<M> clazz)
send(Class, Consumer) without a data injector so no initial function is run
for messages.<M extends Message> Messaging<M> send(java.lang.Class<M> clazz, java.util.function.Consumer<M> dataInjector)
Messaging object for sending messages.clazz - Class of message to send. Must be a message class extending Message.dataInjector - Function run when each message is created which can be used to set its
values.default <M extends Message.Boolean> Messaging<M> send(java.lang.Class<M> clazz, boolean messageBody)
Messaging object for sending messages with single boolean field.clazz - Class of message to send. Must be a message class extending Message.Boolean.messageBody - Value for message body.default <M extends Message.Float> Messaging<M> send(java.lang.Class<M> clazz, float messageBody)
Messaging object for sending messages with single float field.clazz - Class of message to send. Must be a message class extending Message.Float.messageBody - Value for message body.default <M extends Message.Long> Messaging<M> send(java.lang.Class<M> clazz, long messageBody)
Messaging object for sending messages with single long field.clazz - Class of message to send. Must be a message class extending Message.Long.messageBody - Value for message body.default <M extends Message.Double> Messaging<M> send(java.lang.Class<M> clazz, double messageBody)
Messaging object for sending messages with single double field.clazz - Class of message to send. Must be a message class extending Message.Double.messageBody - Value for message body.default <M extends Message.Integer> Messaging<M> send(java.lang.Class<M> clazz, int messageBody)
Messaging object for sending messages with single int field.clazz - Class of message to send. Must be a message class extending Message.Integer.messageBody - Value for message body.default <M extends Message.Object<T>,T> Messaging<M> send(java.lang.Class<M> clazz, T messageBody)
Messaging object for sending messages with single field.clazz - Class of message to send. Must be a message class extending Message.Object.messageBody - Value for message body.default <M extends OrderedMessage> Messaging<M> sendOrdered(java.lang.Class<M> clazz, java.util.function.Consumer<M> dataInjector)
default <M extends OrderedMessage> Messaging<M> sendOrdered(java.lang.Class<M> clazz)
default <M extends OrderedMessage.Boolean> Messaging<M> sendOrdered(java.lang.Class<M> clazz, boolean messageBody)
default <M extends OrderedMessage.Float> Messaging<M> sendOrdered(java.lang.Class<M> clazz, float messageBody)
default <M extends OrderedMessage.Long> Messaging<M> sendOrdered(java.lang.Class<M> clazz, long messageBody)
default <M extends OrderedMessage.Double> Messaging<M> sendOrdered(java.lang.Class<M> clazz, double messageBody)
default <M extends OrderedMessage.Integer> Messaging<M> sendOrdered(java.lang.Class<M> clazz, int messageBody)
default <M extends OrderedMessage.Object<T>,T> Messaging<M> sendOrdered(java.lang.Class<M> clazz, T messageBody)
default <T extends Message> boolean hasMessageOfType(java.lang.Class<T> clazz, java.util.function.Consumer<T> handler)
clazz - The message type to query for.handler - The handler called when a message of that type is present.default <T extends Message> boolean hasMessageOfType(java.lang.Class<T> clazz)
default <T extends Message> T getMessageOfType(java.lang.Class<T> clazz)
default <T extends Message> boolean hasMessagesOfType(java.lang.Class<T> clazz, java.util.function.Consumer<java.util.List<T>> handler)
clazz - The message type to query for.handler - The handler called when messages of that type are present.default <T extends Message> boolean hasMessagesOfType(java.lang.Class<T> clazz)
java.util.Iterator<? extends Message> getMessageIterator()
<T extends Message> java.util.List<T> getMessagesOfType(java.lang.Class<T> clazz)
LongAccumulatorView getLongAccumulator(java.lang.String name)
name - name of the accumulatorjava.lang.RuntimeException - if no accumulator of this name existsDoubleAccumulatorView getDoubleAccumulator(java.lang.String name)
name - name of the accumulatorjava.lang.RuntimeException - if no accumulator of this name existsvoid stop()
void deferMessages(java.util.List<Message> messages)
messages - The list of messages to be deferred.default <T extends Message> void deferMessages(java.lang.Class<T> clazz)
clazz - The message type to query for.void deliverMessage(Message message)
long getMessageTag()
void deferTask(java.util.function.Consumer<Vertex<? extends simudyne.core.graph.BaseGlobalState>> dataInjector)
dataInjector - The Consumer that will be applied on the Vertex at the end of the phase.<V extends Vertex<BGS>> simudyne.core.graph.PreSpawnedAgent<?> spawn(java.lang.Class<V> vertexType, SerializableConsumer<V> dataInjector)
<V extends Vertex<BGS>> simudyne.core.graph.PreSpawnedAgent<?> spawn(java.lang.Class<V> vertexType)
spawn(Class, SerializableConsumer)AgentContext getContext()