Пространства имен | |
namespace | deliver_msg_helper |
Вспомогательное пространство имен для деталей реализации операции deliver-msg. | |
namespace | insend_helper |
Вспомогательное пространство имен для реализации запуска insend-событий. | |
namespace | settings |
Пространство имен глобальных настроек SObjectizer. | |
Перечисления | |
enum | insend_dispatching_status_t { insend_dispatching_disabled, insend_dispatching_enabled } |
Статус разрешенности обработки insend-событий. Подробнее... | |
Функции | |
static void | send_coop_dereg_msg (const so_4::rt::impl::coop_map_t::value_type &v) |
static void | try_destroy_coop (const so_4::rt::impl::coop_map_t::value_type &v) |
size_t | _check_dereg (size_t &deregistered_coop_count) |
Инициировать очередную "сборку мусора". | |
ret_code_t | deregister_coop (const std::string &coop_name) |
Дерегистрация кооперации. | |
void | _destroy_coop (so_4::rt::agent_coop_t &coop) |
ret_code_t | start (so_4::rt::dispatcher_t &disp, so_4::rt::agent_coop_t *initial_coop) |
Запуск Run-time. | |
ret_code_t | start (so_4::rt::dispatcher_t *disp, so_4::destroy_disp_flags_t destruction_flag, so_4::rt::agent_coop_t *initial_coop) |
Запуск Run-time. | |
ret_code_t | shutdown () |
Подача сигнала на завершение работы системы. | |
ret_code_t | register_coop (so_4::rt::agent_coop_t &coop) |
Регистрация кооперации. | |
ret_code_t | make_global_agent (const std::string &agent_name, const std::string &agent_type) |
Создание глобального агента. | |
cpp_util_2::string_piece_t | receiver_unknown () |
Вспомогательная функция для указания того, что у получателя нет конкретного получателя. | |
ret_code_t | send_msg (const cpp_util_2::string_piece_t agent_name, const cpp_util_2::string_piece_t msg_name, void *msg_data=0, const cpp_util_2::string_piece_t receiver=cpp_util_2::string_piece_t(), unsigned int delay=0, unsigned int period=0) |
Отсылка сообщения. | |
ret_code_t | send_msg (const so_4::rt::comm_channel_t &channel_to, const cpp_util_2::string_piece_t agent_name, const cpp_util_2::string_piece_t msg_name, void *msg_data, const cpp_util_2::string_piece_t receiver=cpp_util_2::string_piece_t(), unsigned int delay=0, unsigned int period=0) |
Отсылка сообщения. | |
template<class Msg> | |
so_4::ret_code_t | send_msg_safely (const cpp_util_2::string_piece_t agent_name, const cpp_util_2::string_piece_t msg_name, Msg *msg_data, const cpp_util_2::string_piece_t receiver=cpp_util_2::string_piece_t(), unsigned int delay=0, unsigned int period=0) |
Безопасная отсылка сообщения. | |
template<class Msg> | |
so_4::ret_code_t | send_msg_safely (const so_4::rt::comm_channel_t &channel_to, const cpp_util_2::string_piece_t agent_name, const cpp_util_2::string_piece_t msg_name, Msg *msg_data, const cpp_util_2::string_piece_t receiver=cpp_util_2::string_piece_t(), unsigned int delay=0, unsigned int period=0) |
Безопасная отсылка сообщения. | |
template<class Msg> | |
so_4::ret_code_t | send_msg_safely (const so_4::rt::comm_channel_t &channel_to, const cpp_util_2::string_piece_t agent_name, const cpp_util_2::string_piece_t msg_name, std::auto_ptr< Msg > msg_data, const cpp_util_2::string_piece_t receiver=cpp_util_2::string_piece_t(), unsigned int delay=0, unsigned int period=0) |
Безопасная отсылка сообщения. | |
template<class Msg> | |
so_4::ret_code_t | send_msg_safely (const cpp_util_2::string_piece_t agent_name, const cpp_util_2::string_piece_t msg_name, std::auto_ptr< Msg > msg_data, const cpp_util_2::string_piece_t receiver=cpp_util_2::string_piece_t(), unsigned int delay=0, unsigned int period=0) |
unsigned int | deliver_msg_on_nonblocked_kernel (const so_4::rt::msg_data_t &data, const insend_dispatching_status_t &insend_status) |
Низкоуровневая доставка сообщения при разблокированном ядре SObjectizer. | |
ret_code_t | subscribe_event (const std::string &agent, const std::string &event, int priority, const so_4::rt::evt_subscr_t &subscr, const so_4::rt::evt_subscr_t::subscr_flag_t &subscr_flag, const so_4::rt::evt_subscr_t::dispatching_t &dispatching=so_4::rt::evt_subscr_t::normal_dispatching) |
Подписка события агента. | |
ret_code_t | query_agent_state (const std::string &agent_name, std::string &state_name) |
Определение текущего состояния агента. | |
so_4::api::settings::settings_t | sobjectizer_settings () |
Управление глобальными настройками SObjectizer. | |
static void | do_subscription (const so_4::rt::impl::agent_wrapper_ptr_vector_t &wrappers, std::vector< const std::string * > &names) |
static void | do_send_messages (const so_4::rt::agent_coop_t &coop, const std::vector< const std::string * > &agent_names) |
static void | setup_dispatcher_binding (const so_4::rt::agent_coop_t &coop, so_4::rt::dispatcher_t &dispatcher) |
template<class LOCK> | |
unsigned int | deliver_msg_on_blocked_kernel (LOCK &lock, const so_4::rt::msg_data_t &data, const insend_dispatching_status_t &insend_status) |
ret_code_t | send_non_delayed_non_periodic_msg (const so_4::rt::comm_channel_t &channel_to, const cpp_util_2::string_piece_t agent_name, const cpp_util_2::string_piece_t msg_name, void *msg_data, const cpp_util_2::string_piece_t receiver) |
ret_code_t | send_delayed_or_periodic_msg (const so_4::rt::comm_channel_t &channel_to, const cpp_util_2::string_piece_t agent_name, const cpp_util_2::string_piece_t msg_name, void *msg_data, const cpp_util_2::string_piece_t receiver, unsigned int delay, unsigned int period) |
static so_4::rt::agent_coop_t * | sobjectizer_coop () |
Создание динамической кооперации для агента sobjectizer. | |
static so_4::rt::agent_coop_t * | communicator_coop () |
Создание динамической кооперации для агента communicator. | |
void | signal_handler (int signo) |
Обработчик таких сигналов, как SIGINT, SIGTERM, SIGHUP. | |
ACE_THR_FUNC_RETURN | signal_thread_function (void *param) |
Нить, которая ожидает срабатывания переменной g_signal_caught. | |
ACE_hthread_t | setup_signal_thread () |
Функция для запуска нити, которая обрабатывает сигналы SIGINT и пр. | |
void | shutdown_signal_thread (ACE_hthread_t hthread) |
Функция для останова нити, которая обрабатывает сигналы SIGINT и пр. | |
static ret_code_t | check_incidents (so_4::rt::impl::sys_dict_t &dict, const so_4::rt::impl::evt_subscr_impl_t &subscr, so_4::rt::impl::msg_wrapper_ptr_set_t &msgs) |
Переменные | |
volatile bool | g_signal_caught |
Признак того, что был пойман сигнал, который должен привести к завершению работы SObjectizer. |
size_t so_4::api::_check_dereg | ( | size_t & | deregistered_coop_count | ) |
Инициировать очередную "сборку мусора".
Осуществляет проверку наличия дерегистрированных коопераций, которые могут быть полностью изъяты из системы. Т.е. коопераций, на которые не осталось ссылок (как на сами кооперации, так и на агентов этих коопераций).
deregistered_coop_count | Приемник числа полностью дерегистрированных коопераций. Данную функцию рекомендуется вызывать до тех пор, пока это значение не будет выставлено в 0. |
Перекрестные ссылки so_4::rt::impl::kernel_t::multi_phase_operation_lock_t::kernel() и so_4::rt::impl::kernel_t::multi_phase_operation_lock_t::unlock().
Используется в so_4::rt::a_sobjectizer_t::evt_check_dereg().
static so_4::rt::agent_coop_t* so_4::api::communicator_coop | ( | ) | [static] |
unsigned int so_4::api::deliver_msg_on_blocked_kernel | ( | LOCK & | lock, | |
const so_4::rt::msg_data_t & | data, | |||
const insend_dispatching_status_t & | insend_status | |||
) | [inline] |
Вспомогательная функция для генерации заявок на обработку сообщения.
Перекрестные ссылки so_4::api::deliver_msg_helper::generate_demands_on_blocked_kernel() и so_4::api::insend_helper::insend_event_dispatcher_binding_t::run_all_insend_events().
Используется в deliver_msg_on_nonblocked_kernel(), send_delayed_or_periodic_msg() и send_non_delayed_non_periodic_msg().
unsigned int so_4::api::deliver_msg_on_nonblocked_kernel | ( | const so_4::rt::msg_data_t & | data, | |
const insend_dispatching_status_t & | insend_status | |||
) |
Низкоуровневая доставка сообщения при разблокированном ядре SObjectizer.
data | Сообщение для маршрутизации. |
insend_status | Можно ли выполнять insend-диспетчеризацию. |
Перекрестные ссылки deliver_msg_on_blocked_kernel() и so_4::rt::impl::kernel_t::one_phase_operation_lock_t::kernel().
Используется в so_4::rt::msg_data_t::send().
ret_code_t so_4::api::deregister_coop | ( | const std::string & | coop_name | ) |
Дерегистрация кооперации.
Кооперация с указанным именем должна быть зарегистрированной.
Успешное завершение deregister_coop
не означает, что кооперация уже изъята из Run-time. Реальное изъятие кооперации произойдет только тогда, когда все агенты кооперации перестанут использоваться (т.е. завершат выполнение всех своих событий; будут выполнены все события, инцидентами которых являются сообщения дерегистрируемых агентов; т.д.).
Перекрестные ссылки so_4::rt::impl::kernel_t::multi_phase_operation_lock_t::kernel(), so_4::rc_sys_not_running, so_4::rt::sobjectizer_agent_name() и so_4::rt::impl::kernel_t::multi_phase_operation_lock_t::unlock().
ret_code_t so_4::api::make_global_agent | ( | const std::string & | agent_name, | |
const std::string & | agent_type | |||
) |
Создание глобального агента.
Эта функция должна вызываться после старта системы. В противном случае невозможно будет подписать коммуникационных агентов на распространение сообщений глобального агента.
Возможно вызывать несколько раз make_global_agent
для одного и того же глобального агента при условии, что везде указывается один и тот же тип агента.
agent_name | Имя глобального агента. |
agent_type | Тип глобального агента. |
Перекрестные ссылки so_4::rt::impl::kernel_t::multi_phase_operation_lock_t::kernel(), so_4::rc_sys_not_running, so_4::rt::msg_auto_ptr_t< Msg >::send(), so_4::rt::sobjectizer_agent_name() и so_4::rt::impl::kernel_t::multi_phase_operation_lock_t::unlock().
ret_code_t so_4::api::query_agent_state | ( | const std::string & | agent_name, | |
std::string & | state_name | |||
) |
Определение текущего состояния агента.
Если агент не имеет состояний, то в state_name возвращается пустая строка.
query_agent_state
. После возврата из query_agent_state
агент может находиться в другом состоянии. agent_name | Имя агента, состояние которого необходимо узнать. |
state_name | Приемник имени состояния агента. |
Перекрестные ссылки so_4::rt::impl::kernel_t::one_phase_operation_lock_t::kernel(), so_4::rc_not_found, so_4::rc_sys_not_running и SO_4_ERROR_RETURN.
Используется в so_4::rt::agent_t::so_change_state().
cpp_util_2::string_piece_t so_4::api::receiver_unknown | ( | ) | [inline] |
Вспомогательная функция для указания того, что у получателя нет конкретного получателя.
so_4::api::send_msg( owner, message, data, so_4::api::receiver_unknown(), delay );
ret_code_t so_4::api::register_coop | ( | so_4::rt::agent_coop_t & | coop | ) |
Регистрация кооперации.
Имя кооперации должно быть уникальным.
Если coop является экземпляром типа so_4::rt::dyn_agent_coop_t
, то после успешной регистрации кооперации объект coop будет уничтожен автоматически при дерегистрации кооперации.
Если coop не является экземпляром типа so_4::rt::dyn_agent_coop_t
, то необходимо обеспечить существование объекта coop все время, пока кооперация является зарегистрированной.
Перекрестные ссылки so_4::rt::impl::kernel_t::multi_phase_operation_lock_t::kernel(), so_4::rc_sys_not_running и so_4::rt::impl::kernel_t::multi_phase_operation_lock_t::unlock().
Используется в so_4::rt::dyn_agent_coop_helper_t::dyn_agent_coop_helper_t() и start().
ret_code_t so_4::api::send_delayed_or_periodic_msg | ( | const so_4::rt::comm_channel_t & | channel_to, | |
const cpp_util_2::string_piece_t | agent_name, | |||
const cpp_util_2::string_piece_t | msg_name, | |||
void * | msg_data, | |||
const cpp_util_2::string_piece_t | receiver, | |||
unsigned int | delay, | |||
unsigned int | period | |||
) |
Функция отсылки отложенного или периодического сообщения.
Такая отсылка должна выполняться в виде многофазной операции.
Перекрестные ссылки deliver_msg_on_blocked_kernel(), so_4::rt::impl::init_msg_data_object_on_blocked_kernel(), insend_dispatching_enabled, so_4::rt::impl::kernel_t::multi_phase_operation_lock_t::kernel(), so_4::rt::comm_channel_t::localhost(), so_4::rt::dispatcher_t::push_delayed_msg(), so_4::rt::msg_data_t::try_destroy_msg_data() и so_4::rt::impl::kernel_t::multi_phase_operation_lock_t::unlock().
Используется в send_msg().
ret_code_t so_4::api::send_msg | ( | const so_4::rt::comm_channel_t & | channel_to, | |
const cpp_util_2::string_piece_t | agent_name, | |||
const cpp_util_2::string_piece_t | msg_name, | |||
void * | msg_data, | |||
const cpp_util_2::string_piece_t | receiver = cpp_util_2::string_piece_t() , |
|||
unsigned int | delay = 0 , |
|||
unsigned int | period = 0 | |||
) |
Отсылка сообщения.
channel_to | Коммуникационный канал, в который необходимо отослать сообщение. |
Перекрестные ссылки send_delayed_or_periodic_msg() и send_non_delayed_non_periodic_msg().
ret_code_t so_4::api::send_msg | ( | const cpp_util_2::string_piece_t | agent_name, | |
const cpp_util_2::string_piece_t | msg_name, | |||
void * | msg_data = 0 , |
|||
const cpp_util_2::string_piece_t | receiver = cpp_util_2::string_piece_t() , |
|||
unsigned int | delay = 0 , |
|||
unsigned int | period = 0 | |||
) |
Отсылка сообщения.
Если period != 0, то инициируется переодическое сообщение. После инициирования переодическое сообщение повторяется до тех пор, пока существует агент-владелец сообщения.
Одно и тоже сообщение может быть инициировано как переодическое несколько раз - каждое сообщение будет возникать независимо от остальных.
Однажды инициированное сообщение нельзя отменить.
Для переодического сообщения delay указывает время, через которое сообщение возникнет в первый раз. Например, если delay == 0, period == 2000, то первый раз сообщение возникнет сразу, а затем будет повторяться каждые 2 секунды. Если delay == 1000, а period == 10000, то первый раз сообщение возникнет через 1 секунду, а затем будет повторяться каждые 10 секунд.
agent_name | Агент-владелец сообщения. |
msg_name | Имя сообщения. |
msg_data |
Данные сообщения. Если msg_data != 0, то подразумевается, что это динамически созданный объект того типа, который был указан для сообщения в описании класса агента. |
receiver |
Имя агента-получателя сообщения. Если receiver пуст, то производится широковещательная рассылка сообщения. Т.е. сообщение получают все подписанные на него агенты. Если receiver не пуст, то производится целенаправленная отсылка сообщения. Т.е. сообщение получает только агент с именем receiver. |
delay |
Задержка перед первым появлением сообщения в миллисекундах. Точность отсчета времени определяется точностью используемой Run-time нити таймера. |
period |
Период повторного появления переодического сообщения. Точность отсчета времени определяется точностью используемой Run-time нити таймера. |
Используется в so_4::rt::comm::a_sop_outgoing_channel_t::evt_start(), so_4::rt::comm::a_raw_outgoing_channel_t::evt_start(), so_4::rt::a_sobjectizer_t::evt_start_normal_shutdown(), so_4::rt::comm::def_disconnect_handler_t::on_connection_fail(), so_4::rt::comm::def_disconnect_handler_t::on_connection_lost(), so_4::rt::msg_auto_ptr_t< Msg >::send(), send_msg_safely() и so_4::rt::comm::a_communicator_t::so_on_subscription().
so_4::ret_code_t so_4::api::send_msg_safely | ( | const cpp_util_2::string_piece_t | agent_name, | |
const cpp_util_2::string_piece_t | msg_name, | |||
std::auto_ptr< Msg > | msg_data, | |||
const cpp_util_2::string_piece_t | receiver = cpp_util_2::string_piece_t() , |
|||
unsigned int | delay = 0 , |
|||
unsigned int | period = 0 | |||
) | [inline] |
agent_name | Агент владелец сообщения. |
msg_name | Имя отсылаемого сообщения. |
msg_data | Данные сообщения. Указатель на динамически созданный объект, который будет уничтожен либо в результате успешной доставки сообщения, либо из-за невозможности отсылки сообщения. |
receiver | Получатель сообщения |
delay | Задержка перед диспетчеризацией сообщения. |
Перекрестные ссылки send_msg().
so_4::ret_code_t so_4::api::send_msg_safely | ( | const so_4::rt::comm_channel_t & | channel_to, | |
const cpp_util_2::string_piece_t | agent_name, | |||
const cpp_util_2::string_piece_t | msg_name, | |||
std::auto_ptr< Msg > | msg_data, | |||
const cpp_util_2::string_piece_t | receiver = cpp_util_2::string_piece_t() , |
|||
unsigned int | delay = 0 , |
|||
unsigned int | period = 0 | |||
) | [inline] |
Безопасная отсылка сообщения.
Пример использования:
std::auto_ptr< msg_my > ptr( new msg_my(...) ); ... so_4::api::send_msg_safely( channel_to, so_query_name(), "msg_my", ptr );
Подробное описание отсылки сообщений см. so_4::api::send_msg().
channel_to | Коммуникационный канал, в который необходимо отослать сообщение. |
agent_name | Агент владелец сообщения. |
msg_name | Имя отсылаемого сообщения. |
msg_data | Данные сообщения. Указатель на динамически созданный объект, который будет уничтожен либо в результате успешной доставки сообщения, либо из-за невозможности отсылки сообщения. |
receiver | Получатель сообщения |
delay | Задержка перед диспетчеризацией сообщения. |
Перекрестные ссылки send_msg().
so_4::ret_code_t so_4::api::send_msg_safely | ( | const so_4::rt::comm_channel_t & | channel_to, | |
const cpp_util_2::string_piece_t | agent_name, | |||
const cpp_util_2::string_piece_t | msg_name, | |||
Msg * | msg_data, | |||
const cpp_util_2::string_piece_t | receiver = cpp_util_2::string_piece_t() , |
|||
unsigned int | delay = 0 , |
|||
unsigned int | period = 0 | |||
) | [inline] |
Безопасная отсылка сообщения.
so_4::api::send_msg_safely( channel_to, so_query_name(), "msg_my", new msg_my( ... ) );
Подробное описание отсылки сообщений см. so_4::api::send_msg().
channel_to | Коммуникационный канал, в который необходимо отослать сообщение. |
agent_name | Агент владелец сообщения. |
msg_name | Имя отсылаемого сообщения. |
msg_data | Данные сообщения. Указатель на динамически созданный объект, который будет уничтожен либо в результате успешной доставки сообщения, либо из-за невозможности отсылки сообщения. |
receiver | Получатель сообщения |
delay | Задержка перед диспетчеризацией сообщения. |
Перекрестные ссылки send_msg().
so_4::ret_code_t so_4::api::send_msg_safely | ( | const cpp_util_2::string_piece_t | agent_name, | |
const cpp_util_2::string_piece_t | msg_name, | |||
Msg * | msg_data, | |||
const cpp_util_2::string_piece_t | receiver = cpp_util_2::string_piece_t() , |
|||
unsigned int | delay = 0 , |
|||
unsigned int | period = 0 | |||
) | [inline] |
Безопасная отсылка сообщения.
so_4::api::send_msg_safely( so_query_name(), "msg_my", new msg_my( ... ) );
Подробное описание отсылки сообщений см. so_4::api::send_msg().
agent_name | Агент владелец сообщения. |
msg_name | Имя отсылаемого сообщения. |
msg_data | Данные сообщения. Указатель на динамически созданный объект, который будет уничтожен либо в результате успешной доставки сообщения, либо из-за невозможности отсылки сообщения. |
receiver | Получатель сообщения |
delay | Задержка перед диспетчеризацией сообщения. |
Перекрестные ссылки send_msg().
Используется в so_4::rt::comm::a_communicator_t::evt_channel_destroyed(), so_4::rt::comm::a_sop_outgoing_channel_t::evt_channel_failed(), so_4::rt::comm::a_raw_outgoing_channel_t::evt_channel_failed(), so_4::rt::a_sobjectizer_t::evt_check_dereg(), so_4::rt::comm::a_communicator_t::evt_client_connected(), so_4::rt::comm::a_sop_outgoing_channel_t::evt_connect(), so_4::rt::comm::a_raw_outgoing_channel_t::evt_connect(), so_4::rt::comm::a_communicator_t::evt_set_filter(), so_4::rt::comm::a_sop_outgoing_channel_t::evt_sop_client_handshake_resp(), so_4::rt::comm::a_sop_incoming_channel_processor_t::evt_start(), so_4::rt::comm::a_raw_incoming_channel_processor_t::evt_start(), so_4::rt::comm::a_sop_outgoing_channel_t::on_channel_acception(), so_4::rt::comm::a_sop_incoming_channel_processor_t::on_channel_acception(), so_4::rt::comm::a_raw_outgoing_channel_t::on_channel_acception(), so_4::rt::comm::a_raw_incoming_channel_processor_t::on_channel_acception(), so_4::rt::comm::a_sop_outgoing_channel_t::on_channel_destroying(), so_4::rt::comm::a_sop_incoming_channel_processor_t::on_channel_destroying(), so_4::rt::comm::a_raw_outgoing_channel_t::on_channel_destroying(), so_4::rt::comm::a_raw_incoming_channel_processor_t::on_channel_destroying(), so_4::rt::comm::a_sop_incoming_channel_processor_t::on_enter_st_failed(), so_4::rt::comm::a_raw_incoming_channel_processor_t::on_enter_st_failed(), so_4::rt::comm::impl::process(), so_4::rt::comm::raw_data_processor_t::process_incoming(), so_4::transport_layer::msg_channel_lost::send(), so_4::transport_layer::msg_channel_failed::send(), so_4::transport_layer::msg_channel_created::send(), so_4::rt::comm::a_sop_incoming_channel_processor_t::so_on_deregistration(), so_4::rt::comm::msg_raw_package::unblock_channel() и so_4::rt::comm::msg_sop_package::unblock_channel().
ret_code_t so_4::api::send_non_delayed_non_periodic_msg | ( | const so_4::rt::comm_channel_t & | channel_to, | |
const cpp_util_2::string_piece_t | agent_name, | |||
const cpp_util_2::string_piece_t | msg_name, | |||
void * | msg_data, | |||
const cpp_util_2::string_piece_t | receiver | |||
) |
Функция отсылки не периодического и не отложенного сообщения.
Такое сообщение может быть отосланно в виде однофазной операции.
Перекрестные ссылки deliver_msg_on_blocked_kernel(), so_4::rt::impl::init_msg_data_object_on_blocked_kernel(), insend_dispatching_enabled, so_4::rt::impl::kernel_t::one_phase_operation_lock_t::kernel(), so_4::rt::comm_channel_t::localhost() и so_4::rt::msg_data_t::try_destroy_msg_data().
Используется в send_msg().
ACE_hthread_t so_4::api::@21::setup_signal_thread | ( | ) | [static] |
Функция для запуска нити, которая обрабатывает сигналы SIGINT и пр.
Перекрестные ссылки signal_thread_function() и SO_4_ABORT_ON_ACE_ERROR.
ret_code_t so_4::api::shutdown | ( | ) |
Подача сигнала на завершение работы системы.
Если Run-time запущен, то вызов shutdown даст сигнал Run-time завершить работу.
Работа будет остановлена без учета состояния зарегистрированых в системе агентов. Поэтому, обращение к shutdown должно рассматриваться как экстренное завершение работы системы.
Перекрестные ссылки so_4::rt::impl::kernel_t::one_phase_operation_lock_t::kernel() и so_4::rc_sys_not_running.
Используется в so_4::rt::a_sobjectizer_t::evt_alarm_shutdown(), so_4::rt::a_sobjectizer_t::evt_finish_normal_shutdown(), signal_thread_function() и start().
void so_4::api::@21::shutdown_signal_thread | ( | ACE_hthread_t | hthread | ) | [static] |
Функция для останова нити, которая обрабатывает сигналы SIGINT и пр.
hthread | Идентификатор ранее запущенной нити. |
Перекрестные ссылки SO_4_ABORT_ON_ACE_ERROR.
void so_4::api::@21::signal_handler | ( | int | signo | ) | [static] |
Обработчик таких сигналов, как SIGINT, SIGTERM, SIGHUP.
Используется в signal_thread_function().
ACE_THR_FUNC_RETURN so_4::api::@21::signal_thread_function | ( | void * | param | ) | [static] |
Нить, которая ожидает срабатывания переменной g_signal_caught.
Затем восстанавливает оригинальные обработчики SIGINT, SIGTERM, SIGHUP и SIGPIPE.
param | Стартовые параметры нити. Должен быть указателем на signal_thread_start_params_t. |
Перекрестные ссылки shutdown() и signal_handler().
Используется в setup_signal_thread().
static so_4::rt::agent_coop_t* so_4::api::sobjectizer_coop | ( | ) | [static] |
so_4::api::settings::settings_t so_4::api::sobjectizer_settings | ( | ) | [inline] |
Управление глобальными настройками SObjectizer.
// Запрещение использования нить обработки сигналов SIGINT. so_4::api::sobjectizer_settings().signal_thread().disable();
ret_code_t so_4::api::start | ( | so_4::rt::dispatcher_t * | disp, | |
so_4::destroy_disp_flags_t | destruction_flag, | |||
so_4::rt::agent_coop_t * | initial_coop | |||
) |
Запуск Run-time.
Если so_4::auto_destroy_disp == destruction_flag, то перед возвратом из данной функции диспетчер будет автоматически уничтожен. Даже, если запуск SObjectizer Run-Time не удался.
disp | Диспетчер, который должен применяться для работы Run-time SObjectizer. Должен быть указателем на динамичесткий объект, если so_4::auto_destroy_disp == destruction_flag. |
destruction_flag | Признак необходимости уничтожения диспетчера перед возвратом из функции. |
initial_coop |
Стартовая кооперация, которая должна быть зарегистрирована сразу после запуска Run-time. Если содержит 0, значит нет стартовой кооперации. Если не 0, и регистрация завершается неудачно, то Run-time останавливается и функция start возвращает код ошибки. |
Перекрестные ссылки so_4::auto_destroy_disp, communicator_coop(), so_4::rt::impl::kernel_t::one_phase_operation_lock_t::kernel(), so_4::rc_sys_running, register_coop(), shutdown() и sobjectizer_coop().
ret_code_t so_4::api::start | ( | so_4::rt::dispatcher_t & | disp, | |
so_4::rt::agent_coop_t * | initial_coop | |||
) |
Запуск Run-time.
Если Run-time успешно запущен, то возврат из этой функции осуществляется только после завершения работы Run-time.
disp | Диспетчер, который должен применяться для работы Run-time SObjectizer |
initial_coop |
Стартовая кооперация, которая должна быть зарегистрирована сразу после запуска Run-time. Если содержит 0, значит нет стартовой кооперации. Если не 0, и регистрация завершается неудачно, то Run-time останавливается и функция start возвращает код ошибки. |
Перекрестные ссылки so_4::no_destroy_disp.
ret_code_t so_4::api::subscribe_event | ( | const std::string & | agent, | |
const std::string & | event, | |||
int | priority, | |||
const so_4::rt::evt_subscr_t & | subscr, | |||
const so_4::rt::evt_subscr_t::subscr_flag_t & | subscr_flag, | |||
const so_4::rt::evt_subscr_t::dispatching_t & | dispatching = so_4::rt::evt_subscr_t::normal_dispatching | |||
) |
Подписка события агента.
Приоритет события изменяется в любом случае. Для того, чтобы изменить только приоритет события необходимо указать флаг so_4::rt::evt_subscr_t::e_no_change.
agent | Имя агента, событие которого будет подписано |
event | Имя подписываемого события. |
priority | Приоритет события. |
subscr | Инциденты события. |
subscr_flag | Что нужно делать с инцидентами (полная замена, частичное изъятие, добавление, оставить без изменений). |
dispatching | Тип диспетчеризации события. |
Перекрестные ссылки so_4::rt::impl::kernel_t::one_phase_operation_lock_t::kernel(), so_4::rc_not_found, so_4::rc_sys_not_running, SO_4_ERROR_RETURN и so_4::rt::impl::evt_wrapper_t::subscribe().
Используется в so_4::rt::agent_t::so_subscribe() и so_4::rt::agent_t::so_subscribe_insend_event().
volatile bool so_4::api::g_signal_caught [static] |
Признак того, что был пойман сигнал, который должен привести к завершению работы SObjectizer.
Документация по SObjectizer v.4.4 'Тебуломста'. Последние изменения: Thu Sep 18 10:26:48 2008. Создано системой 1.5.6 |