Interface SimulationController


public interface SimulationController
The SimulationController interface is used to interact with the running DigitalTwin simulation.
  • Method Details

    • getSimulationTimeIncrement

      Duration getSimulationTimeIncrement()

      Retrieves the current simulation time increment.

      Returns:
      the simulation time increment.
    • delay

      SendingResult delay(Duration duration)

      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 or SendingResult.NotHandled if the delay was not processed.
    • emitTelemetry

      SendingResult emitTelemetry(String modelName, byte[] telemetryMessage)

      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, or SendingResult.NotHandled if the delay was not processed.
    • emitTelemetry

      SendingResult emitTelemetry(String modelName, Object jsonSerializableMessage)

      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, or SendingResult.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, or SendingResult.NotHandled if the instance could not be created.
    • createInstanceFromPersistenceStore

      SendingResult createInstanceFromPersistenceStore(String model, String id)
      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, or SendingResult.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, or SendingResult.NotHandled if the instance could not be created.
    • deleteInstance

      SendingResult deleteInstance(String modelName, String instanceId)
      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, or SendingResult.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.