Получить дескриптор действия для условия объекта
#include <ha/ham.h>ham_action_t * ham_action_handle( int nd,const char *ename,const char *cname,const char *aname,unsigned flags );ham_action_t * ham_action_handle_node( int nd,const char *nodename,const char *ename,const char *cname,const char *aname,unsigned flags );
libham
Функция ham_action_handle() возвращает дескриптор действия (name) в условии (cname) объекта (ename).
Можно передавать дескриптор, полученный от данной функции, другим функциям, которые ожидают дескриптор (например, ham_action_remove() или ham_action_handle_free()).
Чтобы получить дескриптор глобального объекта, следует передать NULL в ename. |
Возвращаемый дескриптор непрозрачен — его содержимое доступно только для внутренних нужд библиотеки.
Если указан узел (nd), дескриптор будет относиться к комбинации объект/условие/действие, которая относится к процессу на данном удаленном узле. Функция ham_action_handle_node() используется, когда nodename используется для указания удалённого HAM вместо идентификатора узла (nd).
ham_action_t.
/) или имеет значение NULL. Не удалось подключиться к HAM. Это происходит, когда процесс, открывший соединение (используя ham_connect()), и процесс, вызывающий ham_action_execute(), не совпадают. _POSIX_PATH_MAX (определено в <limits.h>). Обратите внимание, что общая длина имени объекта/условия/действия также ограничена _POSIX_PATH_MAX. ЗОСРВ «Нейтрино»
Вызов ham_action_handle() и последующее использование дескриптора, возвращенного в вызове, аналогичном ham_action_remove(), полностью асинхронны. Следовательно, корректная связка действие/условие/объект может более не существовать к тому моменту, когда дескриптор будет использоваться.
В таком случае функции ham_action*() вернут ошибку (ENOENT), означающую, что действие для условия не существует в данном объекте.
ham_action_execute(), ham_action_handle_free(), ham_action_notify_pulse(), ham_action_notify_signal(), ham_action_remove(), ham_action_restart(), ham_action_waitfor(), ham_condition_handle(), ham_condition_handle_free(), ham_entity_handle(), ham_entity_handle_free()
Предыдущий раздел: Менеджер высокой готовности (HAM)