agent_class :'aag_3::smpp_smsc::a_channel_t' do |c|

  c.super_class :'so_sysconf_2::agent_with_fatal_state_t'

  c.msg :msg_bind_resp_timeout, own_message( :checker => true )

  c.msg :msg_check_channel_activity, own_message
  c.msg :msg_shutdown, own_message

  c.msg :msg_unbind_resp_timeout, own_message( :checker => true )

  c.msg :msg_reconnect, own_message

  c.msg :msg_tell_state, own_message

  c.msg :msg_operation_timer, own_message

  c.msg :msg_imit_deliver,
      own_message( :checker => true,
          :fields => fields(
              :m_count => UINT,
              :m_sequence_number => UINT,
              :m_source_addr => STRING,
              :m_dest_addr => STRING,
              :m_data => STRING,
              :m_dcs => UCHAR,
              :m_esm_class => UCHAR,
              :m_protocol_id => UCHAR ) )
  c.msg :msg_imit_delivery_receipt,
      own_message( :checker => true,
          :fields => fields(
              :m_short_message => STRING,
              :m_message_id => STRING,
              :m_message_state => UCHAR,
              :m_network_error_code => STRING ) )

  c.msg :msg_imitation_mode,
      own_message( :checker => true,
          :fields => fields(
              :m_submit_sm_resp_command_status => UINT,
              :m_message_id => STRING ) )

  c.msg :msg_query_state, own_mbapi_message
  c.msg :msg_send, own_mbapi_message

  c.msg :msg_update_gemont_data, own_message

  c.event :evt_start
  c.event :evt_client_connected, of_type( :'so_4::rt::comm::msg_client_connected' )
  c.event :evt_client_disconnected, of_type( :'so_4::rt::comm::msg_client_disconnected' )
  c.event :evt_bind_resp_timeout, of_msg( :msg_bind_resp_timeout )
  c.event :evt_connect_fail, of_type( :'so_4::rt::comm::msg_fail' )
  c.event :evt_raw_package, of_type( :'so_4::rt::comm::msg_raw_package' )
  c.event :evt_check_channel_activity
  c.event :evt_shutdown_when_unbound
  c.event :evt_shutdown_when_bound
  c.event :evt_disconnection_when_wait_unbind
  c.event :evt_unbind_resp_timeout, of_msg( :msg_unbind_resp_timeout )
  c.event :evt_query_state_when_unbound, of_msg( :msg_query_state )
  c.event :evt_tell_state_when_unbound
  c.event :evt_query_state_when_bound, of_msg( :msg_query_state )
  c.event :evt_tell_state_when_bound
  c.event :evt_send, of_msg( :msg_send )
  c.event :evt_send_when_unbound, of_msg( :msg_send )
  c.event :evt_reconnect
  c.event :evt_operation_timer
  c.event :evt_imit_deliver, of_msg( :msg_imit_deliver )
  c.event :evt_imit_delivery_receipt, of_msg( :msg_imit_delivery_receipt )
  c.event :evt_imitation_mode_when_closed, of_msg( :msg_imitation_mode )
  c.event :evt_imitation_mode_when_bound, of_msg( :msg_imitation_mode )
  c.event :evt_send_when_imitation_mode, of_msg( :msg_send )
  c.event :evt_update_gemont_data

  c.initial_state :st_closed

  c.state :st_closed do |st|
    st.enabled :evt_start,
        :evt_client_connected,
        :evt_connect_fail,
        :evt_shutdown_when_unbound,
        :evt_query_state_when_unbound,
        :evt_tell_state_when_unbound,
        :evt_send_when_unbound,
        :evt_imit_deliver,
        :evt_imit_delivery_receipt,
        :evt_imitation_mode_when_closed,
        :evt_update_gemont_data

    st.disabled :evt_client_disconnected,
        :evt_bind_resp_timeout,
        :evt_raw_package,
        :evt_check_channel_activity,
        :evt_shutdown_when_bound,
        :evt_disconnection_when_wait_unbind,
        :evt_unbind_resp_timeout,
        :evt_query_state_when_bound,
        :evt_tell_state_when_bound,
        :evt_send,
        :evt_reconnect,
        :evt_operation_timer,
        :evt_imitation_mode_when_bound,
        :evt_send_when_imitation_mode

    st.on_enter :on_enter_st_closed
  SOL4_STATE_FINISH()

  c.state :st_open do |st|
    st.enabled :evt_client_disconnected,
        :evt_bind_resp_timeout,
        :evt_raw_package,
        :evt_check_channel_activity,
        :evt_shutdown_when_unbound,
        :evt_query_state_when_unbound,
        :evt_tell_state_when_unbound,
        :evt_send_when_unbound,
        :evt_imit_deliver,
        :evt_imit_delivery_receipt,
        :evt_update_gemont_data

    st.disabled :evt_start,
        :evt_client_connected,
        :evt_connect_fail,
        :evt_shutdown_when_bound,
        :evt_disconnection_when_wait_unbind,
        :evt_unbind_resp_timeout,
        :evt_query_state_when_bound,
        :evt_tell_state_when_bound,
        :evt_send,
        :evt_reconnect,
        :evt_operation_timer,
        :evt_imitation_mode_when_closed,
        :evt_imitation_mode_when_bound,
        :evt_send_when_imitation_mode

    st.on_enter :on_enter_st_open
  SOL4_STATE_FINISH()

  c.state :st_bound_tx do |st|
    st.enabled :evt_client_disconnected,
        :evt_raw_package,
        :evt_check_channel_activity,
        :evt_shutdown_when_bound,
        :evt_query_state_when_bound,
        :evt_tell_state_when_bound,
        :evt_send,
        :evt_reconnect,
        :evt_operation_timer,
        :evt_imit_deliver,
        :evt_imit_delivery_receipt,
        :evt_imitation_mode_when_bound,
        :evt_update_gemont_data

    st.disabled :evt_start,
        :evt_client_connected,
        :evt_bind_resp_timeout,
        :evt_connect_fail,
        :evt_shutdown_when_unbound,
        :evt_query_state_when_unbound,
        :evt_tell_state_when_unbound,
        :evt_send_when_unbound,
        :evt_imitation_mode_when_closed,
        :evt_send_when_imitation_mode

    st.on_enter :on_enter_st_bound_tx
  end

  c.state :st_bound_rx do |st|
    st.enabled :evt_client_disconnected,
        :evt_raw_package,
        :evt_check_channel_activity,
        :evt_shutdown_when_bound,
        :evt_query_state_when_bound,
        :evt_tell_state_when_bound,
        :evt_reconnect,
        :evt_operation_timer,
        :evt_imit_deliver,
        :evt_imit_delivery_receipt,
        :evt_imitation_mode_when_bound,
        :evt_update_gemont_data

    st.disabled :evt_start
        :evt_client_connected
        :evt_bind_resp_timeout
        :evt_connect_fail
        :evt_shutdown_when_unbound
        :evt_disconnection_when_wait_unbind
        :evt_unbind_resp_timeout
        :evt_query_state_when_unbound
        :evt_tell_state_when_unbound
        :evt_send_when_unbound
        :evt_imitation_mode_when_closed
        :evt_send_when_imitation_mode

    st.on_enter :on_enter_st_bound_rx
  end

  c.state :st_bound_trx do |st|
    st.enabled :evt_client_disconnected,
        :evt_raw_package,
        :evt_check_channel_activity,
        :evt_shutdown_when_bound,
        :evt_query_state_when_bound,
        :evt_tell_state_when_bound,
        :evt_send,
        :evt_reconnect,
        :evt_operation_timer,
        :evt_imit_deliver,
        :evt_imit_delivery_receipt,
        :evt_imitation_mode_when_bound,
        :evt_update_gemont_data

    st.disabled :evt_start,
        :evt_client_connected,
        :evt_bind_resp_timeout,
        :evt_connect_fail,
        :evt_shutdown_when_unbound,
        :evt_query_state_when_unbound,
        :evt_tell_state_when_unbound,
        :evt_send_when_unbound,
        :evt_imitation_mode_when_closed,
        :evt_send_when_imitation_mode

    st.on_enter :on_enter_st_bound_trx
  end

  c.state :st_wait_unbind_resp do |st|
    st.enabled :evt_disconnection_when_wait_unbind,
        :evt_unbind_resp_timeout,
        :evt_raw_package,
        :evt_send_when_unbound,
        :evt_tell_state_when_unbound,
        :evt_update_gemont_data

    st.disabled :evt_start,
        :evt_client_connected,
        :evt_client_disconnected,
        :evt_bind_resp_timeout,
        :evt_connect_fail,
        :evt_check_channel_activity,
        :evt_shutdown_when_unbound,
        :evt_shutdown_when_bound,
        :evt_query_state_when_unbound,
        :evt_query_state_when_bound,
        :evt_tell_state_when_bound,
        :evt_send,
        :evt_send_when_unbound,
        :evt_reconnect,
        :evt_operation_timer,
        :evt_imit_deliver,
        :evt_imit_delivery_receipt,
        :evt_imitation_mode_when_closed,
        :evt_imitation_mode_when_bound,
        :evt_send_when_imitation_mode

    st.on_enter :on_enter_st_wait_unbind_resp
  end

  c.state :st_imitation_mode do |st|
    st.enabled :evt_shutdown_when_unbound,
        :evt_imit_deliver,
        :evt_imit_delivery_receipt,
        :evt_send_when_imitation_mode,
        :evt_update_gemont_data,
        :evt_imitation_mode_when_closed

    st.disabled :evt_start
        :evt_client_connected
        :evt_client_disconnected
        :evt_bind_resp_timeout
        :evt_connect_fail
        :evt_raw_package
        :evt_check_channel_activity
        :evt_shutdown_when_bound
        :evt_disconnection_when_wait_unbind
        :evt_unbind_resp_timeout
        :evt_query_state_when_unbound
        :evt_tell_state_when_unbound
        :evt_query_state_when_bound
        :evt_tell_state_when_bound
        :evt_send
        :evt_send_when_unbound
        :evt_reconnect
        :evt_operation_timer
        :evt_imitation_mode_when_bound
  end

  c.state :st_shutdown do |st|
    st.disabled :evt_start,
        :evt_client_connected,
        :evt_client_disconnected,
        :evt_bind_resp_timeout,
        :evt_connect_fail,
        :evt_raw_package,
        :evt_check_channel_activity,
        :evt_shutdown_when_unbound,
        :evt_shutdown_when_bound,
        :evt_disconnection_when_wait_unbind,
        :evt_unbind_resp_timeout,
        :evt_query_state_when_unbound,
        :evt_tell_state_when_unbound,
        :evt_query_state_when_bound,
        :evt_tell_state_when_bound,
        :evt_send,
        :evt_send_when_unbound,
        :evt_reconnect,
        :evt_operation_timer,
        :evt_imit_deliver,
        :evt_imit_delivery_receipt,
        :evt_imitation_mode_when_closed,
        :evt_imitation_mode_when_bound,
        :evt_send_when_imitation_mode,
        :evt_update_gemont_data
    st.on_enter :on_enter_st_shutdown
  end
end

# vim:ts=2:sts=2:sw=2:expandtab

Hosted by uCoz