SOL4_CLASS_START( sample_project::child_processor::processor::a_processor_t )
   SOL4_SUPER_CLASS( so_sysconf_2::agent_with_fatal_state_t )

   SOL4_MSG_START( msg_garbage_collection,
         sample_project::child_processor::processor::a_processor_t::msg_garbage_collection )
   SOL4_MSG_FINISH()

   SOL4_MSG_START( msg_control_child_processes,
         sample_project::child_processor::processor::a_processor_t::msg_control_child_processes )
   SOL4_MSG_FINISH()

   SOL4_MSG_START( msg_update_gemont_data,
         sample_project::child_processor::processor::a_processor_t::msg_update_gemont_data )
   SOL4_MSG_FINISH()

   SOL4_MSG_START( msg_reconfigure,
         sample_project::child_processor::processor::a_processor_t::msg_reconfigure )

      SOL4_MSG_FIELD( m_cfg_file_name )
   SOL4_MSG_FINISH()

   SOL4_EVENT( evt_start )

   SOL4_EVENT_STC(
      evt_child_process_hello,
      sample_project::child_processor::child_iface::a_child_iface_t::msg_hello )

   SOL4_EVENT_STC(
      evt_phase_c,
      a_request_producer_t::msg_phase_c )
   SOL4_EVENT_STC(
      evt_phase_c_result_received,
      sample_project::child_processor::child_iface::a_child_iface_t::msg_phase_c_result )
   SOL4_EVENT_STC(
      evt_client_disconnected,
      so_4::rt::comm::msg_client_disconnected )

   SOL4_EVENT_STC(
      evt_phase_p,
      a_request_producer_t::msg_phase_p )
   SOL4_EVENT_STC(
      evt_phase_p_result_received,
      sample_project::child_processor::child_iface::a_child_iface_t::msg_phase_p_result )

   SOL4_EVENT( evt_control_child_processes )
   SOL4_EVENT( evt_garbage_collection )
   SOL4_EVENT( evt_update_gemont_data )

   SOL4_EVENT_STC(
      evt_reconfigure,
      sample_project::child_processor::processor::a_processor_t::msg_reconfigure )

   SOL4_INITIAL_STATE( st_normal )

   SOL4_STATE_START( st_normal )
      SOL4_STATE_EVENT( evt_start )
      SOL4_STATE_EVENT( evt_child_process_hello )
      SOL4_STATE_EVENT( evt_client_disconnected )
      SOL4_STATE_EVENT( evt_phase_c )
      SOL4_STATE_EVENT( evt_phase_c_result_received )
      SOL4_STATE_EVENT( evt_phase_p )
      SOL4_STATE_EVENT( evt_phase_p_result_received )
      SOL4_STATE_EVENT( evt_control_child_processes )
      SOL4_STATE_EVENT( evt_garbage_collection )
      SOL4_STATE_EVENT( evt_update_gemont_data )
      SOL4_STATE_EVENT( evt_reconfigure )
   SOL4_STATE_FINISH()

SOL4_CLASS_FINISH()