Class Environment

Class Documentation

class Environment

Public Types

enum class Phase

Values:

enumerator Construction
enumerator Assembly
enumerator Startup
enumerator Execution
enumerator Shutdown
enumerator Deconstruction

Public Functions

inline explicit Environment(unsigned int num_workers, bool run_forever = default_run_forever, bool fast_fwd_execution = default_fast_fwd_execution, const Duration &timeout = Duration::max())
void register_reactor(Reactor *reactor)
void assemble()
auto startup() -> std::thread
void sync_shutdown()
void async_shutdown()
void export_dependency_graph(const std::string &path)
void dump_to_yaml(const std::string &path)
inline auto top_level_reactors() const noexcept -> const auto&
inline auto phase() const noexcept -> Phase
inline auto scheduler() const noexcept -> const Scheduler*
inline auto scheduler() noexcept -> Scheduler*
inline auto logical_time() const noexcept -> const LogicalTime&
inline auto start_time() const noexcept -> const TimePoint&
inline auto timeout() const noexcept -> const Duration&
inline auto num_workers() const noexcept -> unsigned int
inline auto fast_fwd_execution() const noexcept -> bool
inline auto run_forever() const noexcept -> bool
inline auto max_reaction_index() const noexcept -> unsigned int

Public Static Functions

static void dump_trigger_to_yaml(std::ofstream &yaml, const BaseAction &trigger)
static void dump_instance_to_yaml(std::ofstream &yaml, const Reactor &reactor)
static void dump_port_to_yaml(std::ofstream &yaml, const BasePort &port)
static void dump_reaction_to_yaml(std::ofstream &yaml, const Reaction &reaction)
static inline auto physical_time() noexcept -> TimePoint

Private Types

using Dependency = std::pair<Reaction*, Reaction*>

Private Functions

void build_dependency_graph(Reactor *reactor)
void calculate_indexes()

Private Members

const unsigned int num_workers_ = {default_number_worker}
unsigned int max_reaction_index_ = {default_max_reaction_index}
const bool run_forever_ = {default_run_forever}
const bool fast_fwd_execution_ = {default_fast_fwd_execution}
std::set<Reactor*> top_level_reactors_ = {}
std::set<Reaction*> reactions_ = {}
std::vector<Dependency> dependencies_ = {}
Scheduler scheduler_
Phase phase_ = {Phase::Construction}
TimePoint start_time_ = {}
const Duration timeout_ = {}
std::mutex shutdown_mutex_ = {}