Go to the documentation of this file.
22 #ifndef SIMULATION_MANAGER_H
23 #define SIMULATION_MANAGER_H
143 virtual void stopCB() = 0;
147 virtual bool runCB(
unsigned numIterations) = 0;
167 std::mutex _reqMutex;
169 RequestResult processRequest(std::function<
void ()> action, std::vector<SimState> validSourceStates,
170 std::string actionMsg1, std::string actionMsg2,
bool lockMutex =
true);
172 void checkTransitionConstraints(std::vector<SimState> validSourceStates, std::string actionStr);
173 void changeState(
SimState newState);
RequestResult runSimulation(unsigned numIterations)
Run the Simulation for specified amount of timesteps.
Definition: simulation_manager.cpp:62
SimulationTime _simTimeout
Definition: simulation_manager.h:158
SimState currentState
Definition: simulation_manager.h:60
Manages simulation execution.
Definition: simulation_manager.h:47
jsonSharedPtr _simConfig
Simulation Configuration.
Definition: simulation_manager.h:154
virtual void shutdownCB()=0
Shutdown the simulation.
virtual bool runCB(unsigned numIterations)=0
Run the simulation.
std::string printSimState(const SimState &simState)
returns a simulation state as a string
Definition: simulation_manager.cpp:156
virtual void stopCB()=0
Forward request to stop the simulation.
virtual ~SimulationManager()=default
RequestResult runSimulationUntilDoneOrTimeout()
Runs the simulation until a separate thread stops it or simTimeout (defined in SimulationConfig) is r...
Definition: simulation_manager.cpp:76
SimulationManager()=delete
RequestResult initializeSimulation()
Initialize the simulation.
Definition: simulation_manager.cpp:50
std::shared_ptr< nlohmann::json > jsonSharedPtr
Definition: json_schema_utils.h:35
Definition: ptr_templates.h:28
SimulationDataManager & getSimulationDataManager()
Definition: simulation_manager.cpp:179
SimulationDataManager _simulationDataManager
Definition: simulation_manager.h:156
SimState currentState()
returns the current state of the simulation
Definition: simulation_manager.cpp:174
std::string errorMessage
Definition: simulation_manager.h:61
Manages all simulation data.
Definition: simulation_data_manager.h:53
virtual bool runUntilDoneOrTimeoutCB()=0
Run the simulation.
Helper structure for storing request result and error messages.
Definition: simulation_manager.h:58
RequestResult resetSimulation()
Reset the currently running simulation.
Definition: simulation_manager.cpp:90
virtual void initializeCB()=0
Initialize the simulation.
RequestResult shutdownSimulation()
Shuts down the simulation.
Definition: simulation_manager.cpp:114
RequestResult stopSimulation()
Request to stop the simulation if it was running, if it wasn't the call has no effect.
Definition: simulation_manager.cpp:102
virtual bool resetCB()=0
Resets the simulation, returns true if the simulation was reset false otherwise.
SimState
States the simulation can be in.
Definition: simulation_manager.h:55
std::chrono::nanoseconds SimulationTime
Definition: time_utils.h:31
virtual bool hasSimulationTimedOut() const =0
static void validateConfig(jsonSharedPtr &config)
Validates config against Simulation schema.
Definition: simulation_manager.cpp:28