Example #1
0
	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_define_agent() override
	{
		so_set_delivery_filter( m_data_mbox, []( const dummy_msg & msg ) {
				return 0 == msg.m_i;
			} );

		so_subscribe( m_data_mbox ).event< finish >( &a_test_t::evt_finish );
		so_subscribe( m_data_mbox ).event( &a_test_t::evt_dummy_msg );
	}
	virtual void
	so_define_agent() override
	{
		so_set_delivery_filter( m_svc_mbox, []( const data & msg ) {
				return 1 == std::get<0>( msg );
			} );

		so_subscribe( m_svc_mbox ).event( []( const data & msg ) {
				return 1 + std::get<0>( msg );
			} );
	}
Example #4
0
	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 ) );
			} );
	}