Menu

SObjectizer v.5.5.4 TODOs

Yauheni Akhotnikau

TODO


POSTPONED or DECLINED

Customization of reaction to cooperation deregistration

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

Cooperation deregistration scheme change

Purpose: to allow creation of single-threaded Run-Time.

Postponed because there is no real need for single-threaded SObjectizer version.

Event queues implementation tuning

Postponed for the future version (because of lack of resources and time).


DONE

Tools for monitoring of SObjectizer internals

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]

Autoshutdown and removing of unused dispatchers

Implemented like private dispatcher. See: [so-5.5.4 Private dispatchers]

Message limits implementation

Implemented. See: [so-5.5.4 Message limits]

agent_context_t for agent's constructor simplification

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]


Related

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