using namespace std::chrono_literals;
template< typename Signal_To_Send, typename Signal_To_Receive >
{
public :
:
so_5::agent_t( std::move(ctx) )
, m_mbox( std::move(
mbox) )
{}
void so_define_agent() override
{
so_subscribe( m_mbox ).event( [this](mhood_t<Signal_To_Receive>) {
so_5::send_delayed< Signal_To_Send >( m_mbox, 25ms );
} );
}
};
{
public :
a_example_t( context_t ctx )
:
so_5::agent_t( std::move(ctx) )
{
so_subscribe_self().event( &a_example_t::on_finish );
}
virtual void so_evt_start() override
{
so_5::send_delayed< finish >( *this, std::chrono::milliseconds(500) );
so_environment().change_message_delivery_tracer_filter(
const auto tid = td.
tid();
return tid && thr_id == *tid;
} ) );
make_ping_pong_pair(
so_environment() ).binder() );
make_ping_pong_pair(
}
private :
void on_finish( mhood_t<finish> )
{
so_deregister_agent_coop_normally();
}
{
const auto mbox = so_environment().create_mbox();
} );
so_5::send_delayed< ping >(
mbox, 25ms );
}
};
int main()
{
try
{
} );
},
params.message_delivery_tracer(
params.message_delivery_tracer_filter(
} );
}
catch( const std::exception & ex )
{
std::cerr << "Error: " << ex.what() << std::endl;
return 1;
}
return 0;
}