#include <iostream>
#include <stdexcept>
{
public :
a_child_t( context_t ctx, bool should_throw )
, m_should_throw{ should_throw }
{}
{
if( m_should_throw )
throw std::runtime_error( "A child agent failure!" );
}
private :
const bool m_should_throw;
};
{
public :
a_parent_t( context_t ctx )
, m_counter{ 0 }
, m_max_counter{ 3 }
{}
{
.
event( &a_parent_t::evt_child_created )
.
event( &a_parent_t::evt_child_destroyed );
}
{
register_child_coop();
}
private :
int m_counter;
const int m_max_counter;
void evt_child_created(
{
std::cout <<
"coop_reg: " << evt.
m_coop_name << std::endl;
if( m_counter >= m_max_counter )
}
void evt_child_destroyed(
{
++m_counter;
register_child_coop();
}
void register_child_coop()
{
{
coop.
make_agent< a_child_t >( m_counter < m_max_counter );
<< std::endl;
} );
}
};
int main()
{
try
{
{
} );
}
catch( const std::exception & ex )
{
std::cerr << "Error: " << ex.what() << std::endl;
return 1;
}
return 0;
}