public class LocalEnvironment<S extends simudyne.core.graph.BaseGlobalState> extends java.lang.Object implements Environment<S>
| Constructor and Description |
|---|
LocalEnvironment(simudyne.core.graph.local.LocalGraph<S> system,
int phaseCount,
simudyne.core.graph.local.VertexBlock<S> block,
ModelContext context,
boolean sortInboxes,
java.util.Map<java.lang.String,LocalLongAccumulatorView> agentLongAccumulators,
java.util.Map<java.lang.String,LocalDoubleAccumulatorView> agentDoubleAccumulators) |
| Modifier and Type | Method and Description |
|---|---|
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) |
ModelContext |
getContext() |
DoubleAccumulatorView |
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.
|
LongAccumulatorView |
getLongAccumulator(java.lang.String name)
Gets a previously created Long Accumulator
|
java.util.Iterator<Message> |
getMessageIterator() |
<T extends Message> |
getMessagesOfType(java.lang.Class<T> clazz) |
long |
getMessageTag() |
int |
getPhaseCount() |
simudyne.core.graph.GraphConfiguration |
getSystemConfig() |
Model |
getSystemModel() |
void |
processVertex(long id,
Vertex<S> vertex,
java.util.ArrayList<Message> inbox,
java.util.Queue<java.lang.Long> stoppedVertices) |
<M extends Message> |
send(java.lang.Class<M> clazz,
java.util.function.Consumer<M> dataInjector)
Create a
Messaging object for sending messages. |
void |
setMessageTag(long tag)
Set the value of the message tag which will be embedded in each message sent by this
Environment.
|
<T extends Vertex<S>> |
spawn(java.lang.Class<T> vertexType,
SerializableConsumer<T> dataInjector)
Creates a new agent.
|
<V extends Vertex<S>> |
spawn(java.lang.Class<V> vertexType) |
void |
stop()
Allow an vertex to stop it self.
|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitdeferMessages, getMessageOfType, hasMessageOfType, hasMessageOfType, hasMessagesOfType, hasMessagesOfType, send, send, send, send, send, send, send, sendOrdered, sendOrdered, sendOrdered, sendOrdered, sendOrdered, sendOrdered, sendOrdered, sendOrderedpublic LocalEnvironment(simudyne.core.graph.local.LocalGraph<S> system, int phaseCount, simudyne.core.graph.local.VertexBlock<S> block, ModelContext context, boolean sortInboxes, java.util.Map<java.lang.String,LocalLongAccumulatorView> agentLongAccumulators, java.util.Map<java.lang.String,LocalDoubleAccumulatorView> agentDoubleAccumulators)
public Model getSystemModel()
public simudyne.core.graph.GraphConfiguration getSystemConfig()
public void setMessageTag(long tag)
EnvironmentsetMessageTag in interface Environment<S extends simudyne.core.graph.BaseGlobalState>public void processVertex(long id,
Vertex<S> vertex,
java.util.ArrayList<Message> inbox,
java.util.Queue<java.lang.Long> stoppedVertices)
public int getPhaseCount()
getPhaseCount in interface Environment<S extends simudyne.core.graph.BaseGlobalState>public S getGlobals()
EnvironmentgetGlobals in interface Environment<S extends simudyne.core.graph.BaseGlobalState>public <M extends Message> Messaging<M> send(java.lang.Class<M> clazz, java.util.function.Consumer<M> dataInjector)
EnvironmentMessaging object for sending messages.send in interface Environment<S extends simudyne.core.graph.BaseGlobalState>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.public java.util.Iterator<Message> getMessageIterator()
getMessageIterator in interface Environment<S extends simudyne.core.graph.BaseGlobalState>public <T extends Message> java.util.List<T> getMessagesOfType(java.lang.Class<T> clazz)
getMessagesOfType in interface Environment<S extends simudyne.core.graph.BaseGlobalState>public LongAccumulatorView getLongAccumulator(java.lang.String name)
EnvironmentgetLongAccumulator in interface Environment<S extends simudyne.core.graph.BaseGlobalState>name - name of the accumulatorpublic DoubleAccumulatorView getDoubleAccumulator(java.lang.String name)
EnvironmentgetDoubleAccumulator in interface Environment<S extends simudyne.core.graph.BaseGlobalState>name - name of the accumulatorpublic void stop()
Environmentstop in interface Environment<S extends simudyne.core.graph.BaseGlobalState>public void deferMessages(java.util.List<Message> messages)
EnvironmentdeferMessages in interface Environment<S extends simudyne.core.graph.BaseGlobalState>messages - The list of messages to be deferred.public void deliverMessage(Message message)
deliverMessage in interface Environment<S extends simudyne.core.graph.BaseGlobalState>public long getMessageTag()
getMessageTag in interface Environment<S extends simudyne.core.graph.BaseGlobalState>public void deferTask(java.util.function.Consumer<Vertex<? extends simudyne.core.graph.BaseGlobalState>> dataInjector)
EnvironmentdeferTask in interface Environment<S extends simudyne.core.graph.BaseGlobalState>dataInjector - The Consumer that will be applied on the Vertex at the end of the phase.public <T extends Vertex<S>> simudyne.core.graph.PreSpawnedAgent<T> spawn(java.lang.Class<T> vertexType, SerializableConsumer<T> dataInjector)
Environmentspawn in interface Environment<S extends simudyne.core.graph.BaseGlobalState>public <V extends Vertex<S>> simudyne.core.graph.PreSpawnedAgent<V> spawn(java.lang.Class<V> vertexType)
spawn in interface Environment<S extends simudyne.core.graph.BaseGlobalState>Environment.spawn(Class, SerializableConsumer)public ModelContext getContext()
getContext in interface Environment<S extends simudyne.core.graph.BaseGlobalState>