Класс so_sysconf_2::impl::a_sysconf_impl_t

#include <a_sysconf_impl.hpp>

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


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

Реализация интерфейса a_sysconf_t.

Реальный класс агента, осуществляющего управление конфигурацией прикладной системы

Открытые типы

typedef std::map< std::string,
ref_dll_t > 
dll_map_t
 Тип карты загруженных DLL.
typedef std::map< std::string,
ref_coop_t > 
coop_map_t
 Тип карты известных sysconf коопераций.
typedef std::map< std::string,
coop_factory_t * > 
factory_map_t
 Тип карты известных sysconf фабрик коопераций.
typedef
so_sysconf_2::a_sysconf_t::msg_reg_coop 
msg_script_reg_coop
typedef
so_sysconf_2::a_sysconf_t::msg_make_coop 
msg_script_make_coop

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

 a_sysconf_impl_t (sysconf_logger_t *logger)
 Инициализирующий конструктор.
void evt_add_coop_handler (const so_4::rt::event_data_t &data, const a_sysconf_t::msg_add_coop_handler *cmd)
 Обрабтка появления нового управлятора кооперации.
void evt_add_coop_factory (const so_4::rt::event_data_t &data, const a_sysconf_t::msg_add_coop_factory *cmd)
 Обрабтка появления новой фабрики коопераций.
void evt_load_dll (const so_4::rt::event_data_t &data, const a_sysconf_t::msg_load_dll *cmd)
 Обработчик команды загрузки DLL.
void evt_unload_dll (const so_4::rt::event_data_t &data, const a_sysconf_t::msg_unload_dll *cmd)
 Обработчик команды выгрузки DLL.
void evt_reg_coop (const so_4::rt::event_data_t &data, const a_sysconf_t::msg_reg_coop *cmd)
 Обработчик команды регистрации кооперации.
void evt_script_reg_coop (const so_4::rt::event_data_t &data, const msg_script_reg_coop *cmd)
 Реакция на сообщение msg_script_reg_coop.
void evt_query_transaction (const so_4::rt::event_data_t &data, const msg_query_transaction &cmds)
 Обработчик запроса на выполнение следующей команды текущей транзакции.
void evt_finish_transaction (const so_4::rt::event_data_t &data, const msg_finish_transaction &cmds)
 Обработчик окончания транзакции.
void evt_timeout (const so_4::rt::event_data_t &data, const msg_timeout &msg)
 Обработчик таймаута события.
void evt_make_coop (const so_4::rt::event_data_t &data, const a_sysconf_t::msg_make_coop *cmd)
void evt_script_make_coop (const so_4::rt::event_data_t &data, const msg_script_make_coop *cmd)
 Реакция на сообщение msg_script_make_coop.
void evt_dereg_coop (const so_4::rt::event_data_t &data, const a_sysconf_t::msg_dereg_coop *cmd)
 Обработчик команды дерегистрации кооперации.
void evt_restart_coop (const so_4::rt::event_data_t &data, const a_sysconf_t::msg_restart_coop *cmd)
 Обработчик команды перерегистрации кооперации.
void evt_rereg_coop (const so_4::rt::event_data_t &data, const a_sysconf_t::msg_rereg_coop *cmd)
void evt_coop_deregistered (const so_4::rt::event_data_t &data, const so_4::rt::msg_coop_deregistered *cmd)
 Обработчик уведомления о дерегистрации кооперации.
void evt_shutdown_enabled (const so_4::rt::event_data_t &data)
 Обработчик завершения работы подсистемы.
void evt_coop_deregistered_when_shutdown (const so_4::rt::event_data_t &data, const so_4::rt::msg_coop_deregistered *cmd)
void evt_query_sysconf_info (const so_4::rt::event_data_t &data, const a_sysconf_t::msg_query_sysconf_info *)
 Обработчик запроса текущего состояния подсистемы.
void evt_event (const so_4::rt::event_data_t &data, const a_sysconf_t::msg_event *evt)
 Обработчик сообщения о том, что произошло именованное событие.

Открытые статические члены

static const std::string & agent_name ()
 Имя единственного агента данного типа.

Закрытые члены

void init_rereg (coop_t &coop, const std::string &cfg_file)
 Для кооперации coop устанавливает информацию о перерегистрации.
void do_reg_coop (const std::string &coop_name, const std::string &cfg_file)
 Регистрация кооперации.
void do_make_coop (const std::string &coop_name, const std::string &factory_name, const std::string &cfg_file)
 Создание кооперации при помощи фабрики.
bool do_dereg_coop (const std::string &coop_name)
 Дерегистрация кооперации.
void dec_dll_ref_count (const std::string &coop_name, const std::string &dll_alias)
void rereg_coop_if_needed (rereg_info_t *rereg_info, const std::string &coop_name, const std::string &factory_name="")
 Если необходимо, повторно перерегистрирует кооперацию.
void process_deregistered_coop (const std::string &coop_name)
 Обработка дерегистрированной кооперации.
void dereg_all_coops ()
 Дерегистрация всех коопераций.
void check_shutdown_possibility ()
 Проверка возможности завершения работы.
void remove_all_dll_coops (const std::string &dll_alias)
void remove_all_dll_factories (const std::string &dll_alias)
void send_msg_sysconf_info (const sysconf_info_t &info, const so_4::rt::comm_channel_t &to) const
void send_msg_sysconf_info (const sysconf_info_t &info) const
sysconf_info_t make_sysconf_info () const
void inform_about_sysconf_changes () const
bool is_from_current_trn (long cmd_trn_id, std::ostringstream &err_stream)

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

dll_map_t m_dll_map
 Словарь загруженных DLL.
coop_map_t m_coop_map
 Словарь доступных коопераций.
factory_map_t m_factory_map
 Словарь доступных фабрик коопераций.
std::auto_ptr< sysconf_logger_tm_logger
 Журнализатор.
long m_trn_id
 ID текущей транзакции.
bool m_is_in_trn
 Флаг состояния транзакции.
script::cmd_list_t m_cmds_rest
 Список команд к выполнению после ожидания некоторого события.

Классы

struct  msg_finish_transaction
 Сообщение об окончании транзакции. Подробнее...
struct  msg_query_transaction
 Сообщение о выполнении очередной команды текущей транзакции. Подробнее...
struct  msg_timeout
 Сообщение об истечении таймаута события. Подробнее...


Определения типов

typedef std::map< std::string, coop_factory_t * > so_sysconf_2::impl::a_sysconf_impl_t::factory_map_t

Тип карты известных sysconf фабрик коопераций.

Начиная с:
v.2.1.0

typedef so_sysconf_2::a_sysconf_t::msg_reg_coop so_sysconf_2::impl::a_sysconf_impl_t::msg_script_reg_coop

Сообщение о регистрации кооперации из конфигурационного файла.

Отсылается при выполнении команд в режиме транзакции. Если будут отсылаться сообщения msg_make_coop, то не будут успевать обрабатываться сообщения msg_add_coop_handler, отсылаемые из загруженных DLL.

typedef so_sysconf_2::a_sysconf_t::msg_make_coop so_sysconf_2::impl::a_sysconf_impl_t::msg_script_make_coop

Сообщение о создании кооперации с помощью фабрики из конфигурационного файла.

Отсылается при выполнении команд в режиме транзакции. Если будут отсылаться сообщения msg_reg_coop, то не будут успевать обрабатываться сообщения msg_add_coop_handler, отсылаемые из загруженных DLL.


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

so_sysconf_2::impl::a_sysconf_impl_t::a_sysconf_impl_t ( sysconf_logger_t logger  ) 

Инициализирующий конструктор.

Аргументы:
logger  Журнализатор событий. Может быть null. Если отличен от null, то уничтожается в деструкторе.


Методы

const std::string & so_sysconf_2::impl::a_sysconf_impl_t::agent_name (  )  [static]

Имя единственного агента данного типа.

В системе должен быть только один агент с таким именем.

void so_sysconf_2::impl::a_sysconf_impl_t::evt_add_coop_handler ( const so_4::rt::event_data_t &  data,
const a_sysconf_t::msg_add_coop_handler cmd 
)

Обрабтка появления нового управлятора кооперации.

Приоритет:
0

void so_sysconf_2::impl::a_sysconf_impl_t::evt_add_coop_factory ( const so_4::rt::event_data_t &  data,
const a_sysconf_t::msg_add_coop_factory cmd 
)

Обрабтка появления новой фабрики коопераций.

Приоритет:
0

void so_sysconf_2::impl::a_sysconf_impl_t::evt_load_dll ( const so_4::rt::event_data_t &  data,
const a_sysconf_t::msg_load_dll cmd 
)

Обработчик команды загрузки DLL.

Приоритет:
0

void so_sysconf_2::impl::a_sysconf_impl_t::evt_unload_dll ( const so_4::rt::event_data_t &  data,
const a_sysconf_t::msg_unload_dll cmd 
)

Обработчик команды выгрузки DLL.

Приоритет:
0

void so_sysconf_2::impl::a_sysconf_impl_t::evt_reg_coop ( const so_4::rt::event_data_t &  data,
const a_sysconf_t::msg_reg_coop cmd 
)

Обработчик команды регистрации кооперации.

Приоритет:
0

void so_sysconf_2::impl::a_sysconf_impl_t::evt_script_reg_coop ( const so_4::rt::event_data_t &  data,
const msg_script_reg_coop cmd 
)

Реакция на сообщение msg_script_reg_coop.

Это сообщение преобразовывается в нормальное сообщение msg_reg_coop.

Приоритет:
0

void so_sysconf_2::impl::a_sysconf_impl_t::evt_query_transaction ( const so_4::rt::event_data_t &  data,
const msg_query_transaction cmds 
)

Обработчик запроса на выполнение следующей команды текущей транзакции.

Приоритет:
0 Если транзакции нет - стартует новую.

void so_sysconf_2::impl::a_sysconf_impl_t::evt_finish_transaction ( const so_4::rt::event_data_t &  data,
const msg_finish_transaction cmds 
)

Обработчик окончания транзакции.

Приоритет:
0

void so_sysconf_2::impl::a_sysconf_impl_t::evt_timeout ( const so_4::rt::event_data_t &  data,
const msg_timeout msg 
)

Обработчик таймаута события.

Приоритет:
0

void so_sysconf_2::impl::a_sysconf_impl_t::evt_make_coop ( const so_4::rt::event_data_t &  data,
const a_sysconf_t::msg_make_coop cmd 
)

Обработчик команды создания кооперации при помощи фабрики.

Приоритет:
0

void so_sysconf_2::impl::a_sysconf_impl_t::evt_script_make_coop ( const so_4::rt::event_data_t &  data,
const msg_script_make_coop cmd 
)

Реакция на сообщение msg_script_make_coop.

Это сообщение преобразовывается в нормальное сообщение msg_make_coop.

Приоритет:
0

void so_sysconf_2::impl::a_sysconf_impl_t::evt_dereg_coop ( const so_4::rt::event_data_t &  data,
const a_sysconf_t::msg_dereg_coop cmd 
)

Обработчик команды дерегистрации кооперации.

Приоритет:
0

void so_sysconf_2::impl::a_sysconf_impl_t::evt_restart_coop ( const so_4::rt::event_data_t &  data,
const a_sysconf_t::msg_restart_coop cmd 
)

Обработчик команды перерегистрации кооперации.

Приоритет:
0

void so_sysconf_2::impl::a_sysconf_impl_t::evt_rereg_coop ( const so_4::rt::event_data_t &  data,
const a_sysconf_t::msg_rereg_coop cmd 
)

Обработчик команды перерегистрации кооперации с новым конфигурационным файлом.

Приоритет:
0

void so_sysconf_2::impl::a_sysconf_impl_t::evt_coop_deregistered ( const so_4::rt::event_data_t &  data,
const so_4::rt::msg_coop_deregistered *  cmd 
)

Обработчик уведомления о дерегистрации кооперации.

Приоритет:
0

void so_sysconf_2::impl::a_sysconf_impl_t::evt_shutdown_enabled ( const so_4::rt::event_data_t &  data  ) 

Обработчик завершения работы подсистемы.

Все кооперации дерегистрируются.

Инцидент:
a_shutdowner_impl_t::msg_shutdown_enabled
Приоритет:
0

void so_sysconf_2::impl::a_sysconf_impl_t::evt_coop_deregistered_when_shutdown ( const so_4::rt::event_data_t &  data,
const so_4::rt::msg_coop_deregistered *  cmd 
)

Обработчик уведомления о дерегистрации коопераци когда происходит завершение работы подсистемы.

Приоритет:
0

void so_sysconf_2::impl::a_sysconf_impl_t::evt_query_sysconf_info ( const so_4::rt::event_data_t &  data,
const a_sysconf_t::msg_query_sysconf_info  
)

Обработчик запроса текущего состояния подсистемы.

Приоритет:
0
Заметки:
Сообщение so_sysconf_2::a_sysconf_t::msg_sysconf_info отправляется в тот канал связи, из которого было получено сообщение msg_query_sysconf_info.

void so_sysconf_2::impl::a_sysconf_impl_t::evt_event ( const so_4::rt::event_data_t &  data,
const a_sysconf_t::msg_event evt 
)

Обработчик сообщения о том, что произошло именованное событие.

Имя события сравнивается с именем события, которое ожидается в текущий момент (устанавливается тегом {wait-for}).

void so_sysconf_2::impl::a_sysconf_impl_t::dec_dll_ref_count ( const std::string &  coop_name,
const std::string &  dll_alias 
) [private]

Уменьшает количество ссылок на DLL, в которой расположена кооперация.

void so_sysconf_2::impl::a_sysconf_impl_t::rereg_coop_if_needed ( rereg_info_t rereg_info,
const std::string &  coop_name,
const std::string &  factory_name = "" 
) [private]

Если необходимо, повторно перерегистрирует кооперацию.

Если factory_name == "", то ситается, что кооперация была создана coop_by_handler_t, в противном случае - coop_by_factory_t.

void so_sysconf_2::impl::a_sysconf_impl_t::check_shutdown_possibility (  )  [private]

Проверка возможности завершения работы.

Все кооперации должны быть дерегистрированны. Если завершение работы возможно, отсылается сообщение a_sobjectizer.msg_normal_shutdown.

void so_sysconf_2::impl::a_sysconf_impl_t::remove_all_dll_coops ( const std::string &  dll_alias  )  [private]

Изъятие всех коопераций, которые относятся к указанной DLL.

void so_sysconf_2::impl::a_sysconf_impl_t::remove_all_dll_factories ( const std::string &  dll_alias  )  [private]

Изъятие всех фабрик коопераций, которые относятся к указанной DLL.

void so_sysconf_2::impl::a_sysconf_impl_t::send_msg_sysconf_info ( const sysconf_info_t info,
const so_4::rt::comm_channel_t &  to 
) const [private]

Создание экземпляра сообщения so_sysconf_2::a_sysconf_t::msg_sysconf_info и отсылка его в указанный канал связи.

void so_sysconf_2::impl::a_sysconf_impl_t::send_msg_sysconf_info ( const sysconf_info_t info  )  const [private]

Создание экземпляра сообщения so_sysconf_2::a_sysconf_t::msg_sysconf_info и его широковещательная рассылка.

sysconf_info_t so_sysconf_2::impl::a_sysconf_impl_t::make_sysconf_info (  )  const [private]

Формирование описания текущего состояния sysconf.

void so_sysconf_2::impl::a_sysconf_impl_t::inform_about_sysconf_changes (  )  const [private]

Информирование всего мира о новом состоянии sysconf. Вызывается после успешного изменения состояния sysconf (загрузка/выгрузка DLL, регистрация/дерегистрация кооперации).

bool so_sysconf_2::impl::a_sysconf_impl_t::is_from_current_trn ( long  cmd_trn_id,
std::ostringstream &  err_stream 
) [private]

Проверка, можно ли выполнять команду с ID транзакции cmd_trn_id. Если нельзя, выводит сообщение об ошибке в err_stream.

Возвращает:
true, если можно, иначе false.


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

factory_map_t so_sysconf_2::impl::a_sysconf_impl_t::m_factory_map [private]

Словарь доступных фабрик коопераций.

Начиная с:
v.2.1.0

std::auto_ptr< sysconf_logger_t > so_sysconf_2::impl::a_sysconf_impl_t::m_logger [private]

Журнализатор.

Если журнализатор не задан в конструкторе, то содержит указатель на объект null_sysconf_logger_t.

long so_sysconf_2::impl::a_sysconf_impl_t::m_trn_id [private]

ID текущей транзакции.

Содержит актуальное значение только, если m_is_in_trn == true.

bool so_sysconf_2::impl::a_sysconf_impl_t::m_is_in_trn [private]

Флаг состояния транзакции.

true - агент находится в состоянии транзакции.

script::cmd_list_t so_sysconf_2::impl::a_sysconf_impl_t::m_cmds_rest [private]

Список команд к выполнению после ожидания некоторого события.

Актуален только в моменты ожидания события и получения msg_event. Содержит список команд следующих за командой ожидания события.


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