Получить дескриптор объекта
#include <ha/ham.h>ham_entity_t * ham_entity_handle( int nd,const char *ename,unsigned flags );ham_entity_t * ham_entity_handle_node( const char *nodename,const char *ename,unsigned flags );
0
или ND_LOCAL_NODE
для локального узла.NULL
, то параметр будет проигнорирован.libham
Функция ham_entity_handle() возвращает дескриптор объекта ename. Затем дескриптор может быть передан другим функциям, например, ham_condition() или ham_entity_handle_free().
![]() | Чтобы получить дескриптор глобального объекта, следует передать NULL в ename. |
Возвращаемый дескриптор непрозрачен — его содержимое доступно только для внутренних нужд библиотеки.
Если узел (nd) явно указан, то дескриптор относится к комбинации объект/условие/действие, которая относится к процессу на данном удаленном узле. Функция ham_entity_handle_node() используется, когда nodename используется для указания удаленного HAM вместо идентификатора узла (nd).
ham_entity_t
.
/
). _POSIX_PATH_MAX
(определено в <limits.h>
). Следует обратить внимание, что общая длина имени объекта/условия/действия также ограничена _POSIX_PATH_MAX
. ЗОСРВ «Нейтрино»
Вызов ham_entity_handle() и последующее использование дескриптора, возвращенного в таком вызове, как ham_condition(), полностью асинхронны. Следовательно, действие/условие/объект может более не существовать к тому моменту, когда дескриптор будет использоваться позднее.
В таком случае функции ham_condition*() вернут ошибку ENOENT
, означающую, что действие для условия в объекте не существует.
ham_action_handle(), ham_action_handle_free(), ham_condition(), ham_condition_handle(), ham_condition_handle_free(), ham_condition_remove(), ham_entity_handle_free()
Предыдущий раздел: Менеджер высокой готовности (HAM)