#include <iostream>
#include <sstream>
{
public:
a_disp_user_t( context_t ctx, std::string name )
{}
{
{ log_stream << m_name << ".so_evt_start(): start pause"; }
std::this_thread::sleep_for( std::chrono::seconds( 1 ) );
{ log_stream << m_name << ".so_evt_start(): finish pause"; }
}
{
{ log_stream << m_name << ".so_evt_finish(): start pause"; }
std::this_thread::sleep_for( std::chrono::seconds( 1 ) );
{ log_stream << m_name << ".so_evt_finish(): finish pause"; }
}
private:
};
std::string create_agent_name( const std::string & base, int i )
{
return base + "_" + std::to_string(i);
}
{
for( int i = 0; i < 4; ++i )
{
create_agent_name( "default_disp", i+1 ) );
}
{
for( int i = 0; i < 3; ++i )
{
disp.binder(),
create_agent_name( "single_thread", i+1 ) );
}
}
{
for( int i = 0; i < 2; ++i )
{
disp.binder( "A" ),
create_agent_name( "active_group_A", i+1 ) );
}
for( int i = 0; i < 2; ++i )
{
disp.binder( "B" ),
create_agent_name( "active_group_B", i+1 ) );
}
}
{
for( int i = 0; i < 4; ++i )
{
disp.binder(),
create_agent_name( "active_obj", i+1 ) );
}
}
});
}
int main()
{
try
{
}
catch( const std::exception & ex )
{
std::cerr << "Error: " << ex.what() << std::endl;
return 1;
}
return 0;
}
A helper header file for including all public SObjectizer stuff.
const name_for_agent_t m_name
Optional name for the agent.
virtual void so_evt_finish()
Hook of agent finish in SObjectizer.
environment_t & so_environment() const noexcept
Access to the SObjectizer Environment which this agent is belong.
virtual void so_evt_start()
Hook on agent start inside SObjectizer.
environment_t & environment() const noexcept
Access to SO Environment for which cooperation is bound.
Agent * make_agent_with_binder(so_5::disp_binder_shptr_t binder, Args &&... args)
Helper method for simplification of agents creation and binding to the specified dispatcher.
Agent * make_agent(Args &&... args)
Helper method for simplification of agents creation.
void stop() noexcept
Send a shutdown signal to the Run-Time.
decltype(auto) introduce_coop(Args &&... args)
Helper method for simplification of cooperation creation and registration.
#define SO_5_LOG_ERROR(logger, var_name)
A special macro for helping error logging.
SO_5_FUNC dispatcher_handle_t make_dispatcher(environment_t &env, const std::string_view data_sources_name_base, disp_params_t params)
Create an instance of active_group dispatcher.
SO_5_FUNC dispatcher_handle_t make_dispatcher(environment_t &env, const std::string_view data_sources_name_base, disp_params_t params)
Create an instance of active_obj dispatcher.
SO_5_FUNC dispatcher_handle_t make_dispatcher(environment_t &env, const std::string_view data_sources_name_base, disp_params_t params)
Create an instance of one_thread dispatcher.
void launch(Init_Routine &&init_routine)
Launch a SObjectizer Environment with default parameters.