Пространства имен | |
namespace | insend_helper |
Вспомогательное пространство имен для реализации запуска insend-событий. | |
Перечисления | |
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) |
Создание глобального агента. | |
ret_code_t | send_msg (const std::string &agent_name, const std::string &msg_name, void *msg_data=0, const char *receiver=0, unsigned int delay=0, unsigned int period=0) |
Отсылка сообщения. | |
ret_code_t | send_msg (const std::string &agent_name, const std::string &msg_name, void *msg_data, const std::string &receiver, unsigned int delay=0, unsigned int period=0) |
Отсылка сообщения. | |
ret_code_t | send_msg (const so_4::rt::comm_channel_t &channel_to, const std::string &agent_name, const std::string &msg_name, void *msg_data, const std::string &receiver, unsigned int delay=0, unsigned int period=0) |
Отсылка сообщения. | |
template<class Msg> | |
so_4::ret_code_t | send_msg_safely (const std::string &agent_name, const std::string &msg_name, Msg *msg_data, const std::string &receiver="", 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 std::string &agent_name, const std::string &msg_name, Msg *msg_data, const std::string &receiver="", unsigned int delay=0, unsigned int period=0) |
Безопасная отсылка сообщения. | |
void | _deliver_msg (const so_4::rt::msg_data_t &data, const insend_dispatching_status_t &insend_status) |
Доставка сообщения. | |
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) |
Определение текущего состояния агента. | |
static void | do_subscription (const so_4::rt::impl::agent_wrapper_ptr_vector_t &wrappers, std::vector< std::string > &names) |
static void | do_send_messages (const so_4::rt::agent_coop_t &coop, const std::vector< std::string > &agent_names) |
static so_4::rt::agent_coop_t * | sobjectizer_coop () |
Создание динамической кооперации для агента sobjectizer. | |
static so_4::rt::agent_coop_t * | communicator_coop () |
Создание динамической кооперации для агента communicator. | |
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) |
|
Статус разрешенности обработки insend-событий.
|
|
Инициировать очередную "сборку мусора". Осуществляет проверку наличия дерегистрированных коопераций, которые могут быть полностью изъяты из системы. Т.е. коопераций, на которые не осталось ссылок (как на сами кооперации, так и на агентов этих коопераций).
|
|
Доставка сообщения. Это внутренняя функция для предоставления возможности реализации собственных компонентов для SObjectizer-а (например, диспетчера).
|
|
Создание динамической кооперации для агента communicator.
|
|
Дерегистрация кооперации. Кооперация с указанным именем должна быть зарегистрированной.
Успешное завершение |
|
Создание глобального агента. Эта функция должна вызываться после старта системы. В противном случае невозможно будет подписать коммуникационных агентов на распространение сообщений глобального агента.
Возможно вызывать несколько раз
|
|
Определение текущего состояния агента. Если агент не имеет состояний, то в state_name возвращается пустая строка.
|
|
Регистрация кооперации. Имя кооперации должно быть уникальным.
Если coop является экземпляром типа
Если coop не является экземпляром типа
|
|
Отсылка сообщения. Отсылка сообщения. Если period != 0, то инициируется переодическое сообщение. После инициирования переодическое сообщение повторяется до тех пор, пока существует агент-владелец сообщения. Одно и тоже сообщение может быть инициировано как переодическое несколько раз - каждое сообщение будет возникать независимо от остальных. Однажды инициированное сообщение нельзя отменить. Для переодического сообщения delay указывает время, через которое сообщение возникнет в первый раз. Например, если delay == 0, period == 2000, то первый раз сообщение возникнет сразу, а затем будет повторяться каждые 2 секунды. Если delay == 1000, а period == 10000, то первый раз сообщение возникнет через 1 секунду, а затем будет повторяться каждые 10 секунд.
|
|
Отсылка сообщения. Отсылка сообщения. Если period != 0, то инициируется переодическое сообщение. После инициирования переодическое сообщение повторяется до тех пор, пока существует агент-владелец сообщения. Одно и тоже сообщение может быть инициировано как переодическое несколько раз - каждое сообщение будет возникать независимо от остальных. Однажды инициированное сообщение нельзя отменить. Для переодического сообщения delay указывает время, через которое сообщение возникнет в первый раз. Например, если delay == 0, period == 2000, то первый раз сообщение возникнет сразу, а затем будет повторяться каждые 2 секунды. Если delay == 1000, а period == 10000, то первый раз сообщение возникнет через 1 секунду, а затем будет повторяться каждые 10 секунд.
|
|
Отсылка сообщения. Если period != 0, то инициируется переодическое сообщение. После инициирования переодическое сообщение повторяется до тех пор, пока существует агент-владелец сообщения. Одно и тоже сообщение может быть инициировано как переодическое несколько раз - каждое сообщение будет возникать независимо от остальных. Однажды инициированное сообщение нельзя отменить. Для переодического сообщения delay указывает время, через которое сообщение возникнет в первый раз. Например, если delay == 0, period == 2000, то первый раз сообщение возникнет сразу, а затем будет повторяться каждые 2 секунды. Если delay == 1000, а period == 10000, то первый раз сообщение возникнет через 1 секунду, а затем будет повторяться каждые 10 секунд.
|
|
Безопасная отсылка сообщения.
Пример использования: so_4::api::send_msg_safely( channel_to, so_query_name(), "msg_my", new msg_my( ... ) ); Подробное описание отсылки сообщений см. so_4::api::send_msg().
|
|
Безопасная отсылка сообщения.
Пример использования: so_4::api::send_msg_safely( so_query_name(), "msg_my", new msg_my( ... ) ); Подробное описание отсылки сообщений см. so_4::api::send_msg().
|
|
Подача сигнала на завершение работы системы. Если Run-time запущен, то вызов shutdown даст сигнал Run-time завершить работу. Работа будет остановлена без учета состояния зарегистрированых в системе агентов. Поэтому, обращение к shutdown должно рассматриваться как экстренное завершение работы системы.
|
|
Создание динамической кооперации для агента sobjectizer.
|
|
Запуск Run-time.
Если so_4::auto_destroy_disp == destruction_flag, то перед возвратом из данной функции диспетчер будет автоматически уничтожен. Даже, если запуск SObjectizer Run-Time не удался.
|
|
Запуск Run-time. Если Run-time успешно запущен, то возврат из этой функции осуществляется только после завершения работы Run-time.
|
|
Подписка события агента. Приоритет события изменяется в любом случае. Для того, чтобы изменить только приоритет события необходимо указать флаг so_4::rt::evt_subscr_t::e_no_change.
|