public interface Environment<S extends java.io.Serializable>
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 |
deliverMessage(Message message) |
DoubleAccumulator |
getDoubleAccumulator(java.lang.String name)
Gets a previously created Double Accumulator
|
S |
getGlobals()
Get a global value that the system has broadcast to all vertices.
|
LongAccumulator |
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. |
void |
setMessageTag(long tag)
Set the value of the message tag which will be embedded in each message sent by this
Environment.
|
void |
stop()
Allow an vertex to stop it self.
|
int getPhaseCount()
void setMessageTag(long tag)
S 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 <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)
LongAccumulator getLongAccumulator(java.lang.String name)
name
- name of the accumulatorjava.lang.RuntimeException
- if no accumulator of this name existsDoubleAccumulator 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()