OpenSWMM Engine  6.0.0-alpha.1
Data-oriented, plugin-extensible SWMM Engine (6.0.0-alpha.1)
Loading...
Searching...
No Matches
PluginState.hpp
Go to the documentation of this file.
1
56#ifndef OPENSWMM_PLUGIN_STATE_HPP
57#define OPENSWMM_PLUGIN_STATE_HPP
58
59#include <cstdint>
60
61namespace openswmm {
62
67enum class PluginState : std::int32_t {
68 UNLOADED = 0,
69 LOADED = 1,
70 INITIALIZED = 2,
71 VALIDATED = 3,
72 PREPARED = 4,
73 UPDATING = 5,
74 FINALIZED = 6,
75 CLOSED = 7,
76 ERROR = -1
77};
78
84inline const char* plugin_state_to_string(PluginState state) noexcept {
85 switch (state) {
86 case PluginState::UNLOADED: return "UNLOADED";
87 case PluginState::LOADED: return "LOADED";
88 case PluginState::INITIALIZED: return "INITIALIZED";
89 case PluginState::VALIDATED: return "VALIDATED";
90 case PluginState::PREPARED: return "PREPARED";
91 case PluginState::UPDATING: return "UPDATING";
92 case PluginState::FINALIZED: return "FINALIZED";
93 case PluginState::CLOSED: return "CLOSED";
94 case PluginState::ERROR: return "ERROR";
95 default: return "UNKNOWN";
96 }
97}
98
106 using PS = PluginState;
107 if (to == PS::ERROR) return true; // any state can transition to ERROR
108 switch (from) {
109 case PS::UNLOADED: return to == PS::LOADED;
110 case PS::LOADED: return to == PS::INITIALIZED || to == PS::CLOSED;
111 case PS::INITIALIZED: return to == PS::VALIDATED || to == PS::CLOSED;
112 case PS::VALIDATED: return to == PS::PREPARED || to == PS::CLOSED;
113 case PS::PREPARED: return to == PS::UPDATING || to == PS::FINALIZED;
114 case PS::UPDATING: return to == PS::PREPARED;
115 case PS::FINALIZED: return to == PS::CLOSED;
116 case PS::CLOSED: return false;
117 case PS::ERROR: return to == PS::CLOSED;
118 default: return false;
119 }
120}
121
122} /* namespace openswmm */
123
124#endif /* OPENSWMM_PLUGIN_STATE_HPP */
@ CLOSED
Resources released.
@ INITIALIZED
Initial conditions applied.
PluginState
Plugin lifecycle states.
Definition PluginState.hpp:67
@ CLOSED
Library closed and handle released.
@ FINALIZED
finalize() returned success; no more update() calls.
@ VALIDATED
validate() returned success.
@ PREPARED
prepare() returned success; ready to accept update() calls.
@ UNLOADED
Library not yet loaded (or was closed).
@ LOADED
Shared library opened via dlopen/LoadLibrary.
@ ERROR
Plugin is in an error state; not usable.
@ UPDATING
Currently executing an update() call (transient; not normally observed).
@ INITIALIZED
initialize() returned success.
Definition Controls.cpp:24
bool plugin_state_transition_valid(PluginState from, PluginState to) noexcept
Check whether a state transition is valid.
Definition PluginState.hpp:105
const char * plugin_state_to_string(PluginState state) noexcept
Convert a PluginState to a human-readable string.
Definition PluginState.hpp:84