View Source amoc_controller (amoc v3.3.0)
Main controller of a node, responsible for the scenario and the users
Note that this module should be rarely used, APIs are fully exposed byamoc
and amoc_dist
for local or distributed environments respectively.
Summary
Types
Status of the node, note that amoc_controller is disabled for the master node
Time to wait in between spawning new users
Highest user id registered in the node
Details about the scenario currently running
Internal state of the node's controller
Number of users currently running in the node
Types
-type amoc_status() :: idle | {running, running_status()} | {terminating, amoc:scenario()} | {finished, amoc:scenario()} | {error, any()} | disabled.
-type interarrival() :: non_neg_integer().
-type last_user_id() :: non_neg_integer().
-type running_status() :: #{scenario := amoc:scenario(), currently_running_users := user_count(), highest_user_id := last_user_id()}.
-type state() :: #state{scenario :: amoc:scenario() | undefined, last_user_id :: last_user_id(), status :: idle | running | terminating | finished | {error, any()} | disabled, scenario_state :: any(), create_users :: [amoc_scenario:user_id()], tref :: timer:tref() | undefined}.
-type user_count() :: non_neg_integer().
Functions
-spec add_users(amoc_scenario:user_id(), amoc_scenario:user_id()) -> ok | {error, term()}.
-spec disable() -> ok | {error, term()}.
-spec get_status() -> amoc_status().
-spec remove_users(user_count(), boolean()) -> {ok, user_count()}.
-spec start_scenario(amoc:scenario(), amoc_config:settings()) -> ok | {error, term()}.
-spec stop_scenario() -> ok | {error, term()}.
-spec update_settings(amoc_config:settings()) -> ok | {error, term()}.