Получить дескриптор действия для условия объекта
#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)