Пространство имен so_4::api


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

Пространство имен SObjectizer API.


Пространства имен

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_tsobjectizer_coop ()
 Создание динамической кооперации для агента sobjectizer.
static so_4::rt::agent_coop_tcommunicator_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.


Перечисления

Статус разрешенности обработки insend-событий.

Начиная с:
v.4.2.7
Элементы перечислений:
insend_dispatching_disabled  Запуск insend-событий запрещен.
insend_dispatching_enabled  Немедленный запуск insend-событий разрешен.


Функции

size_t so_4::api::_check_dereg ( size_t &  deregistered_coop_count  ) 

Инициировать очередную "сборку мусора".

Осуществляет проверку наличия дерегистрированных коопераций, которые могут быть полностью изъяты из системы. Т.е. коопераций, на которые не осталось ссылок (как на сами кооперации, так и на агентов этих коопераций).

Возвращает:
количество оставшихся в процессе дерегистрации коопераций.
Внимание:
Это внутреняя функция SObjectizer!
Аргументы:
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]

Создание динамической кооперации для агента communicator.

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

Используется в start().

template<class LOCK>
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.

Начиная с:
v.4.4.0 Отличие от deliver_msg_on_blocked_kernel() в том, что перед началом формирования списка заявок ядро SObjectizer принудительно блокируется в режиме read.
Предназначена для использования внутренностями и расширениями 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. Реальное изъятие кооперации произойдет только тогда, когда все агенты кооперации перестанут использоваться (т.е. завершат выполнение всех своих событий; будут выполнены все события, инцидентами которых являются сообщения дерегистрируемых агентов; т.д.).

Примеры:
sample/dyn_reg/main.cpp, sample/filter/c1.cpp, sample/filter/c2.cpp, sample/parent_insend/main.cpp и sample/qt_ring/main.cpp.

Перекрестные ссылки 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  Тип глобального агента.
Примеры:
sample/filter/c1.cpp, sample/filter/c2.cpp, sample/filter/server.cpp, sample/high_traffic/client.cpp и sample/high_traffic/server.cpp.

Перекрестные ссылки 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]

Вспомогательная функция для указания того, что у получателя нет конкретного получателя.

Начиная с:
v.4.4.0-b6 Пример использования:
 so_4::api::send_msg(
    owner,
    message,
    data,
    so_4::api::receiver_unknown(),
    delay );
Примеры:
sample/hello_delay/main.cpp и sample/hello_periodic/main.cpp.

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 все время, пока кооперация является зарегистрированной.

Примеры:
sample/parent_insend/main.cpp.

Перекрестные ссылки 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 
)

Отсылка сообщения.

Заметки:
Эта функция должна применяться для поддержки Peer-to-Peer соединений.
Аргументы:
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 нити таймера.

Примеры:
sample/chstate/main.cpp, sample/destroyable_traits/main.cpp, sample/dyn_coop_controlled/main.cpp, sample/dyn_reg/main.cpp, sample/filter/c1.cpp, sample/filter/c2.cpp, sample/hello_all/main.cpp, sample/hello_delay/main.cpp, sample/hello_periodic/main.cpp, sample/hello_world/main.cpp, sample/high_traffic/client.cpp, sample/inheritance/main.cpp, sample/parent_insend/main.cpp, sample/qt_ring/main.cpp, sample/qt_ui/main.cpp, sample/raw_channel/tcp_cln.cpp и sample/subscr_hook/main.cpp.

Используется в 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().

template<class 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,
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().

template<class 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]

Безопасная отсылка сообщения.

Начиная с:
v.4.4.0-b2 Версия для использования совместно с std::auto_ptr.
Аналог отсылки сообщения через so_4::rt::msg_auto_ptr_t, но реализованный в виде функции. Если отсылка сообщения не удалась, то экземпляр сообщения автоматически уничтожается.

Пример использования:

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().

template<class 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]

Безопасная отсылка сообщения.

Начиная с:
v.4.2.6 Аналог отсылки сообщения через so_4::rt::msg_auto_ptr_t, но реализованный в виде функции. Если отсылка сообщения не удалась, то экземпляр сообщения автоматически уничтожается.
Пример использования:
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().

template<class 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]

Безопасная отсылка сообщения.

Начиная с:
v.4.2.6 Аналог отсылки сообщения через so_4::rt::msg_auto_ptr_t, но реализованный в виде функции. Если отсылка сообщения не удалась, то экземпляр сообщения автоматически уничтожается.
Пример использования:
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  Задержка перед диспетчеризацией сообщения.
Примеры:
sample/filter/c1.cpp, sample/filter/c2.cpp, sample/filter/server.cpp, sample/hello_all/main.cpp, sample/hello_periodic/main.cpp, sample/high_traffic/client.cpp, sample/high_traffic/server.cpp, sample/parent_insend/main.cpp, sample/qt_ring/main.cpp, sample/qt_ui/main.cpp и sample/raw_channel/tcp_cln.cpp.

Перекрестные ссылки 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 и пр.

Начиная с:
v.4.4.0-b6
Возвращает:
Идентификатор запущенной нити (который затем можно использовать для ACE_Thread::join()).

Перекрестные ссылки signal_thread_function() и SO_4_ABORT_ON_ACE_ERROR.

ret_code_t so_4::api::shutdown (  ) 

Подача сигнала на завершение работы системы.

Если Run-time запущен, то вызов shutdown даст сигнал Run-time завершить работу.

Работа будет остановлена без учета состояния зарегистрированых в системе агентов. Поэтому, обращение к shutdown должно рассматриваться как экстренное завершение работы системы.

Примеры:
sample/qt_ring/main.cpp, sample/qt_ui/main.cpp и sample/raw_channel/tcp_cln.cpp.

Перекрестные ссылки 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 и пр.

Начиная с:
v.4.4.0-b6
Аргументы:
hthread  Идентификатор ранее запущенной нити.

Перекрестные ссылки SO_4_ABORT_ON_ACE_ERROR.

void so_4::api::@21::signal_handler ( int  signo  )  [static]

Обработчик таких сигналов, как SIGINT, SIGTERM, SIGHUP.

Начиная с:
v.4.4.0-b6 Если пойман один из сигналов (SIGINT, SIGTERM, SIGHUP) то выставляет признак g_signal_caught.
Остальные сигналы игнорируются.

Используется в signal_thread_function().

ACE_THR_FUNC_RETURN so_4::api::@21::signal_thread_function ( void *  param  )  [static]

Нить, которая ожидает срабатывания переменной g_signal_caught.

Начиная с:
v.4.4.0-b6 В начале своей работы устанавливает обработчик signal_handler на SIGINT, SIGTERM, SIGHUP, SIGPIPE.
Затем в бесконечном цикле ждет перехода g_signal_caught в true. В данном цикле выполняется регулярный sleep на одну секунду.

Затем восстанавливает оригинальные обработчики SIGINT, SIGTERM, SIGHUP и SIGPIPE.

Заметки:
Если SObjectizer завершает свою работу нормально, то данная нить должна быть остановлена путем перевода g_signal_caught в true.
Аргументы:
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]

Создание динамической кооперации для агента sobjectizer.

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

Используется в start().

so_4::api::settings::settings_t so_4::api::sobjectizer_settings (  )  [inline]

Управление глобальными настройками SObjectizer.

Начиная с:
v.4.4.0-b6
Внимание:
Обращение к этой функции должны быть сделаны до запуска SObjectizer Run-Time.
Пример использования:
 // Запрещение использования нить обработки сигналов 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.

Начиная с:
v.4.2.6
Если Run-time успешно запущен, то возврат из этой функции осуществляется только после завершения работы 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 возвращает код ошибки.

Примеры:
sample/qt_ring/main.cpp и sample/qt_ui/main.cpp.

Перекрестные ссылки 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 возвращает код ошибки.

Примеры:
sample/chstate/main.cpp, sample/destroyable_traits/main.cpp, sample/dyn_coop_controlled/main.cpp, sample/dyn_reg/main.cpp, sample/filter/c1.cpp, sample/filter/c2.cpp, sample/filter/server.cpp, sample/hello_all/main.cpp, sample/hello_delay/main.cpp, sample/hello_periodic/main.cpp, sample/hello_world/main.cpp, sample/high_traffic/client.cpp, sample/high_traffic/server.cpp, sample/inheritance/main.cpp, sample/parent_insend/main.cpp, sample/qt_ring/main.cpp, sample/qt_ui/main.cpp, sample/raw_channel/tcp_cln.cpp, sample/raw_channel/tcp_srv.cpp и sample/subscr_hook/main.cpp.

Перекрестные ссылки 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.

Начиная с:
v.4.4.0-b6


Документация по SObjectizer v.4.4 'Тебуломста'. Последние изменения: Thu Sep 18 10:26:48 2008. Создано системой  doxygen1.5.6 Intervale SourceForge.net Logo