33 #include <sol/state_view.hpp>
47 #include "utility/command.hpp"
60 uint64_t
step()
const override {
return step_; }
78 return static_cast<double>(
step_width().count()) /
static_cast<double>(cycle_time_.count());
117 double realtime_factor_{1.0};
130 engine_time_ms.
reset();
131 cycle_time_ms.
reset();
132 simulator_time_ms.
reset();
133 controller_time_ms.
reset();
134 padding_time_ms.
reset();
135 controller_retries.
reset();
140 {
"engine_time_ms", s.engine_time_ms}, {
"simulator_time_ms", s.simulator_time_ms},
141 {
"controller_time_ms", s.controller_time_ms}, {
"padding_time_ms", s.padding_time_ms},
142 {
"cycle_time_ms", s.cycle_time_ms}, {
"controller_retries", s.controller_retries},
162 #define EXIT_OUTCOME_SUCCESS EXIT_SUCCESS
163 #define EXIT_OUTCOME_UNKNOWN EXIT_FAILURE
164 #define EXIT_OUTCOME_NOSTART 4
165 #define EXIT_OUTCOME_STOPPED 8
166 #define EXIT_OUTCOME_FAILURE 9
167 #define EXIT_OUTCOME_ABORTED 16
171 {SimulationOutcome::Aborted,
"aborted"},
172 {SimulationOutcome::NoStart,
"no-start"},
173 {SimulationOutcome::Failure,
"failure"},
174 {SimulationOutcome::Success,
"success"},
175 {SimulationOutcome::Stopped,
"stopped"},
205 std::unique_ptr<cloe::DataBroker> db;
206 std::unique_ptr<Server> server;
207 std::shared_ptr<Coordinator> coordinator;
208 std::shared_ptr<Registrar> registrar;
209 std::unique_ptr<CommandExecuter> commander;
214 bool report_progress{
false};
221 std::map<std::string, std::unique_ptr<cloe::Simulator>> simulators;
222 std::map<std::string, std::shared_ptr<cloe::Vehicle>> vehicles;
223 std::map<std::string, std::unique_ptr<cloe::Controller>> controllers;
224 std::optional<SimulationOutcome> outcome;
226 bool pause_execution{
false};
229 std::shared_ptr<events::LoopCallback> callback_loop;
230 std::shared_ptr<events::PauseCallback> callback_pause;
231 std::shared_ptr<events::ResumeCallback> callback_resume;
232 std::shared_ptr<events::StartCallback> callback_start;
233 std::shared_ptr<events::StopCallback> callback_stop;
234 std::shared_ptr<events::SuccessCallback> callback_success;
235 std::shared_ptr<events::FailureCallback> callback_failure;
236 std::shared_ptr<events::ResetCallback> callback_reset;
237 std::shared_ptr<events::TimeCallback> callback_time;
240 std::string version()
const;
241 cloe::Logger logger()
const {
return cloe::logger::get(
"cloe"); }
243 std::shared_ptr<cloe::Registrar> simulation_registrar();
245 std::vector<std::string> model_ids()
const;
246 std::vector<std::string> simulator_ids()
const;
247 std::vector<std::string> controller_ids()
const;
248 std::vector<std::string> vehicle_ids()
const;
249 std::vector<std::string> plugin_ids()
const;
251 bool foreach_model(std::function<
bool(
cloe::Model&,
const char* type)> f);
252 bool foreach_model(std::function<
bool(
const cloe::Model&,
const char* type)> f)
const;
254 bool foreach_simulator(std::function<
bool(
const cloe::Simulator&)> f)
const;
256 bool foreach_controller(std::function<
bool(
const cloe::Controller&)> f)
const;
258 bool foreach_vehicle(std::function<
bool(
const cloe::Vehicle&)> f)
const;
Definition: controller.hpp:126
Definition: model.hpp:203
Definition: simulator.hpp:139
Definition: stack.hpp:879
Definition: vehicle.hpp:106
Definition: statistics.hpp:110
void reset()
Definition: statistics.hpp:119
Definition: simulation_progress.hpp:37
Definition: simulation_context.hpp:55
double realtime_factor() const override
Definition: simulation_context.hpp:71
double achievable_realtime_factor() const override
Definition: simulation_context.hpp:77
cloe::Duration step_width() const override
Definition: simulation_context.hpp:61
cloe::Duration time() const override
Definition: simulation_context.hpp:62
cloe::Duration eta() const override
Definition: simulation_context.hpp:63
void increment_step()
Definition: simulation_context.hpp:89
void set_realtime_factor(double s)
Definition: simulation_context.hpp:98
uint64_t step() const override
Definition: simulation_context.hpp:60
std::chrono::nanoseconds Duration
Definition: cloe_fwd.hpp:36
#define ENUM_SERIALIZATION(xType, xMap)
Definition: enum.hpp:51
#define DEFINE_NIL_EVENT(xName, xname, xdescription)
Definition: nil_event.hpp:57
SimulationOutcome
Definition: simulation_context.hpp:150
@ Success
Simulation explicitly concluded with success.
@ Aborted
Simulation aborted due to technical problems or interrupt.
@ Stopped
Simulation concluded, but without valuation.
@ Failure
Simulation explicitly concluded with failure.
@ NoStart
Simulation unable to start.
Definition: simulation_context.hpp:199
Definition: simulation_context.hpp:121