ham_condition_state()

Присоединить условие, связанное со сменой состояния

Прототип:

#include <ha/ham.h>
ham_condition_t * ham_condition_state( ham_entity_t *ehdl,
const char *cname,
unsigned fromstate,
unsigned tostate,
unsigned flags );

Аргументы:

ehdl
Дескриптор объекта HAM. Аргумент ehdl представляет собой дескриптор объекта, полученный либо:
cname
Имя условия.
fromstate
Состояние, из которого необходимо изменить объект.
tostste
Состояние, в которое необходимо изменить объект.
flags
Флаги. Здесь также допустимы стандартные флаги, применимые к условиям. См. ham_condition() для получения более подробной информации. Кроме того, определены следующие флаги:
HCONDSTATEFROMSET
From state is a set.
HCONDSTATETOSET
To state is a set.
HCONDSTATEFROMINV
Invert from state set.
HCONDSTATETOINV
Invert to state set.

Библиотека:

libham

Описание:

Данное условие срабатывает, когда указанный объект переходит из состояния fromstate в состояние tostate.

CONDSTATEANY можно использовать для указания подстановочного символа, означающего любое STATE. Сопоставление состояний основано либо на явном совпадении, либо на особых условиях, описанных в параметре flags.

Состояния могут быть заданы с помощью:

Если fromstate или tostate ссылается на набор, должен быть установлен соответствующий флаг HCONDSTATEFROMSET или HCONDSTATETOSET.

Если необходимо, чтобы fromstate или tostate ссылались на логическое отрицание набора состояний, требуется определить HCONDSTATEFROMINV или HCONDSTATETOINV в flags. Это логически инвертировало бы указанный набор состояний (эквивалентно высказыванию «любое состояние, отличное от данного набора»).

Возвращаемое значение:

a condition handle
Успешное завершение.
NULL
Возникла ошибка. Код ошибки записан в errno.

Коды ошибок:

EBADF
Не удалось подключиться к HAM.
EEXIST
Переданное имя для условия уже существует.
EINVAL
Дескриптор, тип или имя некорректны (например, содержат символ /) или имеют значение NULL. Не удалось подключиться к HAM. Это происходит, когда процесс, открывший соединение (используя ham_connect()), и процесс, вызывающий ham_action_execute(), не совпадают.
ENAMETOOLONG
Указанное имя (в cname) слишком длинное, т.е. оно превышает _POSIX_PATH_MAX (определено в <limits.h>). Обратите внимание, что общая длина имени объекта/условия/действия также ограничена _POSIX_PATH_MAX.
ENOMEM
Недостаточно памяти для создания нового дескриптора.

В дополнение к вышеуказанным ошибкам HAM возвращает любую ошибку, с которой он сталкивается при обслуживании данного запроса.

Классификация:

ЗОСРВ «Нейтрино»

Безопасность использования
Точка остановки потока
Нет
Обработчик прерываний
Нет
Обработчик сигналов
Нет
В потоке
Да

Тематические ссылки:

ham_condition(), ham_condition_raise(), ham_attach(), ham_attach_self(), ham_entity(), ham_entity_control(), ham_entity_handle(), ham_entity_handle_free(), ham_entity_node()




Предыдущий раздел: Менеджер высокой готовности (HAM)