void so_evt_start() { ensure_counter_value( m_message_counter, 0 ); m_id1 = so_environment().schedule_timer( make_message_object(), so_direct_mbox(), 6000, 0 ); m_id2 = so_environment().schedule_timer( make_message_object(), so_direct_mbox(), 6000, 1000 ); m_id3 = so_environment().schedule_timer( make_message_object(), so_direct_mbox(), 6000, 0 ); m_id4 = so_environment().schedule_timer( make_message_object(), so_direct_mbox(), 6000, 1000 ); m_id1.release(); m_id2.release(); ensure_counter_value( m_message_counter, 2 ); so_deregister_agent_coop_normally(); }
virtual void so_define_agent() override { so_set_delivery_filter( m_data_mbox, []( const data & msg ) { return 1 == std::get<0>( msg ); } ); so_default_state() .event( m_data_mbox, [this]( const data & msg ) { const auto value = std::get<0>( msg ); if( 1 != value ) throw std::runtime_error( "unexpected data value: " + std::to_string( value ) ); ++m_values_accepted; } ) .event< finish >( [this] { if( 2 != m_values_accepted ) throw std::runtime_error( "unexpected count of " "accepted data instances: " + std::to_string( m_values_accepted ) ); so_deregister_agent_coop_normally(); } ); }
virtual void so_evt_start() override { expect_current_state( C ); this >>= D; // The current state is "A.B.D". expect_current_state( D ); this >>= E; // The current state is "E". expect_current_state( E ); this >>= A; // The current state is "A.B.D" because deep history of A. expect_current_state( D ); this >>= E; expect_current_state( E ); A.clear_history(); this >>= A; // The current state is "A.B.D" because: // B is the initial substate of A and B has shallow history; // D is the last active substate of B. expect_current_state( D ); this >>= E; expect_current_state( E ); A.clear_history(); B.clear_history(); this >>= A; // The current state is "A.B.C" because: // B is initial substate of A and // C is initial substate of B. expect_current_state( C ); so_deregister_agent_coop_normally(); }
void evt_child_created( const so_5::rt::msg_coop_registered & evt ) { std::cout << "registration passed: " << evt.m_coop_name << std::endl; so_deregister_agent_coop_normally(); }
virtual void so_define_agent() override { so_default_state().event< msg_your_turn >( [this] { if( m_next ) so_5::send< msg_your_turn >( m_next ); else so_deregister_agent_coop_normally(); } ); }
virtual void so_define_agent() { so_subscribe_self().event< msg_tick >( [=] { m_ticks += 1; if( m_ticks < 15 ) so_direct_mbox()->deliver_signal< msg_tick >(); else so_deregister_agent_coop_normally(); } ); }
virtual void so_define_agent() override { so_default_state() .event< msg_one >( [&]{ ++m_received; } ) .event< msg_two >( [&]{ if( 2 != m_received ) throw std::runtime_error( "unexpected count of " "received msg_one instances: " + std::to_string( m_received ) ); so_deregister_agent_coop_normally(); } ); }
virtual void so_define_agent() override { so_default_state() .event( [this]( const so_5::msg_coop_deregistered & ) { so_5::send< data >( m_data_mbox, 0 ); so_5::send< data >( m_data_mbox, 1 ); so_5::send< data >( m_data_mbox, 2 ); so_5::send_to_agent< finish >( *this ); } ) .event< finish >( [this] { so_deregister_agent_coop_normally(); } ); }
virtual void so_define_agent() override { so_set_delivery_filter( m_data_mbox, []( const data & msg ) { return 1 == std::get<0>( msg ); } ); so_subscribe( m_data_mbox ).event( [this]( const data & msg ) { const auto value = std::get<0>( msg ); if( 1 == value ) so_deregister_agent_coop_normally(); else throw std::runtime_error( "unexpected value: " + std::to_string( value ) ); } ); }
virtual void so_define_agent() override { // A notification on complete children cooperation deregistration // must be received and handled. so_default_state().event( [this]( const so_5::msg_coop_deregistered & ) { --m_remaining_iterations; show_remaining_iterations(); if( m_remaining_iterations ) // There are some iterations left. // New child cooperation must be created and started. create_new_child_coop(); else { // Example must be finished. std::cout << "no more iterations left, finishing..." << std::endl; so_deregister_agent_coop_normally(); } } ); }
virtual void so_evt_start() override { auto proxy = m_svc_mbox->get_one< int >().wait_forever(); try { proxy.make_sync_get< data >( 0 ); throw std::runtime_error( "unexpected result for value 0" ); } catch( const so_5::exception_t & x ) { if( so_5::rc_no_svc_handlers != x.error_code() ) throw std::runtime_error( "unexpected error_code: " + std::to_string( x.error_code() ) ); } auto r = proxy.make_sync_get< data >( 1 ); if( 2 != r ) throw std::runtime_error( "unexpected result for value 1: " + std::to_string( r ) ); so_deregister_agent_coop_normally(); }
void evt_finish() { so_deregister_agent_coop_normally(); }