Something like Erlang/Akka supervisors. For example if a cooperation is deregistered in the case of unhandled exception it can be recreated.
Postponed until it will be required in some real project
Purpose: to allow creation of single-threaded Run-Time.
Postponed because there is no real need for single-threaded SObjectizer version.
Postponed for the future version (because of lack of resources and time).
Like event queue sizes, event handling times, count of agents registered and so on.
Implemented in a simple form. See: [so-5.5 In-depth - Run-Time Monitoring]
Implemented like private dispatcher. See: [so-5.5.4 Private dispatchers]
Implemented. See: [so-5.5.4 Message limits]
A new class agent_context_t can be used for simplification writing agent's constructor for the cases where agent tuning options are present or absent. Instead of writing this:
class my_agent : public so_5::rt::agent_t { public : // When there are no tuning options: my_agent( // Environment to work in. so_5::rt::environment_t & env, // Some class-specific args. ... ); // When there are some tuning options: my_agent( // Environment to work in. so_5::rt::environment_t & env, // Tuning options. const so_5::rt::agent_tuning_options_t & options, // Some class-specific args. ... ); ... };
it is possible to write like this:
class my_agent : public so_5::rt::agent_t { public : // Tuning options can be either specified or not. my_agent( // Environment to work in and optional tuning options. agent_context_t env, // Some class-specific args. ... ); ... };
It could used as this:
auto coop = env.create_coop( so_5::autoname ); coop->add_agent( new my_agent( env, ... ) ); coop->add_agent( new my_agent( env + create_agent_option(), ... ) );
Implemented. See: [so-5.5.4 Another constructor for agent_t with context_t parameter]
Wiki: Internals
Wiki: so-5.5 In-depth - Run-Time Monitoring
Wiki: so-5.5.4 Another constructor for agent_t with context_t parameter
Wiki: so-5.5.4 Message limits
Wiki: so-5.5.4 Private dispatchers