simulation_instance Last update: 16.07.2025 1 5 6 #pragma once 7 8 #include "core/lifecycle/i_activity_factory/i_activity_factory.h" 9 #include "core/lifecycle/i_simulation_instance/i_simulation_instance.h" 10 #include "core/service/parameter/simulation_parameters.h" 11 #include "core/service/standalone_activity_service/standalone_init_data/standalone_init_data.h" 12 #include "core/time/i_clock/i_clock.h" 13 #include "core/time/i_simulation_completion_checker/i_simulation_completion_checker.h" 14 19 namespace simulation_framework 20 { 21 namespace core 22 { 23 namespace lifecycle 24 { 25 26 class SimulationInstanceImpl; 27 29 33 class SimulationInstance final : public ISimulationInstance 34 { 35 36 public: 37 SimulationInstance(std::unique_ptr<IActivityFactory> activity_factory, 38 std::shared_ptr<core::time::IClock> sim_clock, 39 std::unique_ptr<time::ISimulationCompletionChecker> sim_state_checker, 40 const core::StandaloneInitData& standalone_init_data, 41 const core::SimulationParameters& core_parameters); 42 43 ~SimulationInstance(); 44 45 void Init() override; 46 void StepOnce() override; 47 void Reset() override; 48 bool IsSimulationFinished() override; 49 std::chrono::milliseconds GetSimulationDuration() const override; 50 std::chrono::milliseconds GetSimulationBaseCycleTime() const override; 51 52 private: 53 std::unique_ptr<SimulationInstanceImpl> impl_; 54 }; 55 56 } // namespace lifecycle 57 } // namespace core 58 } // namespace simulation_framework