ham_action_waitfor()

Добавить задержку действия к условию

Прототип:

#include <ha/ham.h>
ham_action_t * ham_action_waitfor( ham_condition_t *chdl,
const char *aname,
const char *path,
int delay,
unsigned flags );

Аргументы:

сhdl
Дескриптор условия в HAM. Дескриптор (сhdl) может быть получен из:
aname
Действие HAM.
path
Если указан path, то действие ожидает либо появления пути в пространстве имен, либо периода, указанного в параметре delay, в зависимости от того, что меньше.
delay
Желаемая задержка в миллисекундах.
flags
Флаги:
HREARMAFTERRESTART
Указывает, что действие должно быть автоматически перезапущено после перезапуска объекта, которому оно принадлежит. По умолчанию этот флаг отключен — действия автоматически удаляются при перезапуске объекта. Обратите внимание, что если условие, которому принадлежит это действие, удаляется после перезапуска, это действие также будет удалено, независимо от значения этого флага.

Библиотека:

libham

Описание:

Функция ham_action_waitfor() добавляет действие (aname) к заданному условию. В этом случае действие позволяет вставлять произвольные задержки в последовательность действий.

Вызов waitfor завершается с ошибкой, если указанный path не появляется в указанном временном интервале.

Для указания периода ожидания в миллисекундах используется параметр delay.

Существует возможность указать path для управления delay. Если указан path, то действие ожидает либо появления пути в пространстве имен, либо периода, указанного в параметре delay, в зависимости от того, что меньше.

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

Адрес
Дескриптор действия для условия.
NULL
Возникла ошибка. Код ошибки записан в errno.

Коды ошибок:

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

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

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

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

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

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

ham_action_execute(), ham_action_notify_pulse(), ham_action_notify_signal(), ham_action_remove(), ham_action_restart(), ham_condition(), ham_condition_handle()




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