ham_connect(), ham_connect_nd(), ham_connect_node()

Подключиться к HAM

Прототип:

#include <ha/ham.h>
int ham_connect( unsigned flags );
int ham_connect_nd( int nd,
unsigned flags );
int ham_connect_node( const char *nodename,
unsigned flags );

Аргументы:

nd
Идентификатор целевого удаленного узла.
nodename
Целевой удаленный HAM.
flags
Флаги в настоящий момент не поддерживаются.

Библиотека:

libham

Описание:

Функция ham_connect() инициализирует соединение с HAM. Функции ham_connect_nd() и ham_connect_node() инициализируют подключения к удаленному .


Note: Процесс может иметь только одно открытое соединение с HAM в любой выбранный момент времени.

nd, заданный для ham_connect_nd(), является идентификатором удаленного узла во время выполнения вызова ham_connect_nd().


Note: Поскольку идентификаторы узлов являются временными объектами, необходимо получить значение для nd непосредственно перед вызовом, используя netmgr_strtond() или другую функцию, которая преобразует nodename в идентификаторы узлов.

Функция ham_connect_node() принимает в качестве параметра полное имя узла (FQNN).

Вызывать данные функции можно неограниченное количество раз, однако поскольку библиотека ведёт счетчик ссылок, необходимо вызывать ham_disconnect() столько же раз, сколько было вызовов ham_connect(), чтобы разрывать соединения.

Соединения связаны с определенным идентификатором процесса (pid). Если процесс выполняет ham_connect(), а затем вызывает fork(), дочерний процесс должен переподключиться к HAM, снова вызвав ham_connect().

Однако, если процесс вызывает любую из следующих функций:

то ему нет необходимости вызывать ham_connect*(), так как данные функции делают это самостоятельно.

Для всех прочих функций ham*() клиенты должны сначала вызвать ham_connect().

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

0
Успешное завершение.
-1
Возникла ошибка. Код ошибки записан в errno.

Коды ошибок:

В случае сбоя функция ham_connect*() возвращает ошибку, установленную вызываемой внутри функцией open().

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

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

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

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

ham_attach_self(), ham_disconnect(), ham_stop(), fork(), open(), netmgr_strtond()




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