Interface SimulationController
-
Method Summary
Modifier and TypeMethodDescription<T extends DigitalTwinBase>
SendingResultcreateInstance
(String modelName, String instanceId, T base) Create a new digital twin instance for simulation processing.createInstanceFromPersistenceStore
(String model, String id) Create a new digital twin instance for simulation processing from a persistence store.<T extends DigitalTwinBase>
SendingResultcreateInstanceFromPersistenceStore
(String model, String id, T def) The twin instance will be loaded via model name and id from a persistence store.Delay simulation processing for this DigitalTwin instance for a duration of time.deleteInstance
(String modelName, String instanceId) Delete and remove a digital twin instance from simulation processing.Delete and remove this digital twin instance from simulation processing.emitTelemetry
(String modelName, byte[] telemetryMessage) Asynchronously send a JSON serialized message to a DigitalTwin instance that will be processed by the DigitalTwin modelsMessageProcessor.processMessages(ProcessingContext, DigitalTwinBase, Iterable)
method.emitTelemetry
(String modelName, Object jsonSerializableMessage) Asynchronously send a JSON serializable message to a DigitalTwin instance that will be processed by the DigitalTwin modelsMessageProcessor.processMessages(ProcessingContext, DigitalTwinBase, Iterable)
method.Retrieves the current simulation time increment.Stop the simulation.
-
Method Details
-
getSimulationTimeIncrement
Duration getSimulationTimeIncrement()Retrieves the current simulation time increment.
- Returns:
- the simulation time increment.
-
delay
Delay simulation processing for this DigitalTwin instance for a duration of time.
Simulation processing will be delayed for the duration specified relative to the current simulation time.
Examples:
at a current simulation time of 10, an interval of 20, and a delay of 40 -- the instance would skip one cycle of processing and be processed at simulation time 50.
at a current simulation time of 10, an interval of 20, and a delay of 30 -- the instance would skip one cycle of processing and be processed at simulation time 50.
at a current simulation time of 10, an interval of 20, and a delay of 50 -- the instance would skip two cycles of processing and be processed at simulation time 70.
- Parameters:
duration
- the duration to delay.- Returns:
SendingResult.Handled
if the delay was processed orSendingResult.NotHandled
if the delay was not processed.
-
emitTelemetry
Asynchronously send a JSON serialized message to a DigitalTwin instance that will be processed by the DigitalTwin models
MessageProcessor.processMessages(ProcessingContext, DigitalTwinBase, Iterable)
method.- Parameters:
modelName
- the model to send the messages too.telemetryMessage
- a blob representing a JSON serialized messages.- Returns:
SendingResult.Handled
if the messages were processed,SendingResult.Enqueued
if the messages are in process of being handled, orSendingResult.NotHandled
if the delay was not processed.
-
emitTelemetry
Asynchronously send a JSON serializable message to a DigitalTwin instance that will be processed by the DigitalTwin models
MessageProcessor.processMessages(ProcessingContext, DigitalTwinBase, Iterable)
method.- Parameters:
modelName
- the model to send the messages too.jsonSerializableMessage
- an object message that is JSON serializable.- Returns:
SendingResult.Handled
if the messages were processed,SendingResult.Enqueued
if the messages are in process of being handled, orSendingResult.NotHandled
if the delay was not processed.
-
createInstance
<T extends DigitalTwinBase> SendingResult createInstance(String modelName, String instanceId, T base) Create a new digital twin instance for simulation processing.- Type Parameters:
T
- the type of the digital twin to create.- Parameters:
modelName
- the model name.instanceId
- the instance id.base
- the instance to create.- Returns:
SendingResult.Handled
if the instance was created,SendingResult.Enqueued
if the instance is in process of being created, orSendingResult.NotHandled
if the instance could not be created.
-
createInstanceFromPersistenceStore
Create a new digital twin instance for simulation processing from a persistence store. The twin instance will be loaded via model name and id from a persistence store. If no instance can be found, then an exception will be thrown and no instance will be created.- Parameters:
model
- The model name.id
- the instance id.- Returns:
SendingResult.Handled
if the instance was created,SendingResult.Enqueued
if the instance is in process of being created, orSendingResult.NotHandled
if the instance could not be created.
-
createInstanceFromPersistenceStore
<T extends DigitalTwinBase> SendingResult createInstanceFromPersistenceStore(String model, String id, T def) The twin instance will be loaded via model name and id from a persistence store. The twin instance will be loaded via model name and id from a persistence store. If no instance can be found, then the default parameter instance will be used.- Type Parameters:
T
- the type of the digital twin to create.- Parameters:
model
- the model name.id
- the instance id.def
- the default instance to create.- Returns:
SendingResult.Handled
if the instance was created,SendingResult.Enqueued
if the instance * is in process of being created, orSendingResult.NotHandled
if the instance could not be created.
-
deleteInstance
Delete and remove a digital twin instance from simulation processing.- Parameters:
modelName
- the model name.instanceId
- the instance id.- Returns:
SendingResult.Handled
if the instance was deleted,SendingResult.Enqueued
if the instance is in process of being deleted, orSendingResult.NotHandled
if the instance could not be deleted.
-
deleteThisInstance
SendingResult deleteThisInstance()Delete and remove this digital twin instance from simulation processing.- Returns:
- this local request will always return
SendingResult.Handled
.
-
stopSimulation
SimulationStatus stopSimulation()Stop the simulation.- Returns:
- a
SimulationStatus.InstanceRequestedStop
.
-