Класс so_sysconf_2::agent_with_fatal_state_t

#include <agent_with_fatal_state.hpp>

Полный список членов класса


Подробное описание

Агент, который владеет состоянием st_fatal.

Начиная с:
v.2.3.0
При использовании агентов возникает необходимость перехватывать в обработчиках событий все исключения (через std::exception). Если их не перехватывать, то SObjectizer просто аварийно завершит работу. Но все, что агент может предпринять в этой ситуации -- это породить фатальную ошибку и корректно (без Access Violation или других неприятных проявлений) завершить работу приложения. Поскольку обработка фатальной ошибки может занимать довольно продолжительное время, в течении которого агент не должен ни на что реагировать, самое лучше для агента -- это перейти в специальное состояние, в котором уже дожидаться развязки.

Для того, чтобы в каждом прикладном агенте не повторять один и тот же код по обработке исключительного состояния, sysconf предоставляет агента agent_with_fatal_state_t. У этого агента уже есть состояние st_fatal при входе в которое агент порождает сообщение о фатальной ошибке.

Для использования агента agent_with_fatal_state_t нужно:

Примеры:

sample/agent_with_fatal_state/main.cpp.


Открытые члены

 agent_with_fatal_state_t (const std::string &agent_name)
virtual void on_enter_st_fatal (const std::string &)
 Обработчик входа в состояние st_fatal.

Защищенные члены

void switch_to_fatal_state (const std::string &error_name, const std::string &reason)
const std::string & fatal_error_name () const
const std::string & fatal_state_reason () const

Закрытые типы

typedef so_4::rt::agent_t base_type_t
 Псевдоним для базового типа.

Закрытые данные

std::string m_fatal_error_name
std::string m_fatal_state_reason
 Причина перехода в фатальное состояние.

Конструктор(ы)

so_sysconf_2::agent_with_fatal_state_t::agent_with_fatal_state_t ( const std::string &  agent_name  ) 

Аргументы:
agent_name  Имя агента.


Методы

void so_sysconf_2::agent_with_fatal_state_t::on_enter_st_fatal ( const std::string &   )  [virtual]

Обработчик входа в состояние st_fatal.

Порождает сообщение о фатальной ошибке. В качестве описания причины ошибки берутся значения fatal_error_name() и fatal_state_reason().

Метод сделан виртуальным, чтобы производные классы могли перекрыть его логику.

void so_sysconf_2::agent_with_fatal_state_t::switch_to_fatal_state ( const std::string &  error_name,
const std::string &  reason 
) [protected]

Выполнить переход в состояние st_fatal.

Аргументы:
error_name  Имя фатальной ошибки из-за которой происходит переход. Это имя затем возвращается методом fatal_error_name().
reason  Подробное описание причины, по которой происходит переход. Эта причина затем возвращается методом fatal_state_reason().

const std::string & so_sysconf_2::agent_with_fatal_state_t::fatal_error_name (  )  const [protected]

Получить имя ошибки, из-за которой был осуществлен переход в фатальное состояние.

const std::string & so_sysconf_2::agent_with_fatal_state_t::fatal_state_reason (  )  const [protected]

Получить текст сообщения о причине перехода в фатальное состояние.


Данные класса

std::string so_sysconf_2::agent_with_fatal_state_t::m_fatal_error_name [private]

Имя ошибки, из-за которой был осуществлен переход в фатальное состояние.


Объявления и описания членов классов находятся в файлах:
Документация по so_sysconf_2 v.2.4.0. Последние изменения: Wed Oct 31 18:55:07 2007. Создано системой  doxygen1.5.4 Intervale SourceForge.net Logo