Подключиться к 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 );
libham
Функция ham_connect() инициализирует соединение с HAM. Функции ham_connect_nd() и ham_connect_node() инициализируют подключения к удаленному .
![]() | Процесс может иметь только одно открытое соединение с HAM в любой выбранный момент времени. |
nd, заданный для ham_connect_nd(), является идентификатором удаленного узла во время выполнения вызова ham_connect_nd().
![]() | Поскольку идентификаторы узлов являются временными объектами, необходимо получить значение для nd непосредственно перед вызовом, используя netmgr_strtond() или другую функцию, которая преобразует nodename в идентификаторы узлов. |
Функция ham_connect_node() принимает в качестве параметра полное имя узла (FQNN).
Вызывать данные функции можно неограниченное количество раз, однако поскольку библиотека ведёт счетчик ссылок, необходимо вызывать ham_disconnect() столько же раз, сколько было вызовов ham_connect(), чтобы разрывать соединения.
Соединения связаны с определенным идентификатором процесса (pid). Если процесс выполняет ham_connect(), а затем вызывает fork(), дочерний процесс должен переподключиться к HAM, снова вызвав ham_connect().
Однако, если процесс вызывает любую из следующих функций:
то ему нет необходимости вызывать ham_connect*(), так как данные функции делают это самостоятельно.
Для всех прочих функций ham*() клиенты должны сначала вызвать ham_connect().
В случае сбоя функция ham_connect*() возвращает ошибку, установленную вызываемой внутри функцией open().
ЗОСРВ «Нейтрино»
ham_attach_self(), ham_disconnect(), ham_stop(), fork(), open(), netmgr_strtond()
Предыдущий раздел: Менеджер высокой готовности (HAM)