Как заблокировать процесс erlang, пока не станет доступно сетевое соединение - PullRequest
2 голосов
/ 18 декабря 2010

Я настраиваю своего рода механизм синхронизации между двумя разными узлами erlang (на 2 разных машинах или устройствах).Одно из этих устройств будет отключено от сети для выполнения другой задачи.

Когда устройство повторно подключается к сети, ему необходимо связаться с другим узлом erlang для запуска синхронизации данных.

Isесть ли в erlang сообщение, когда доступно сетевое соединение?Или мне нужно сделать какой-нибудь опрос.

Спасибо, Брэд

1 Ответ

1 голос
/ 18 декабря 2010

Вы можете подписаться на изменения подключения узла через net_kernel:monitor_nodes/1. Это отправит вам {nodeup, Node} и {nodedown, Node} сообщения, которые вы можете использовать для управления своей собственной логикой синхронизации.

Возможно, вы захотите, чтобы процесс, который регулярно запускается net_adm:ping(TargetNode), пытался подключиться к другому узлу, чтобы затем получать сообщения {nodeup, TargetNode}. Это позволит избежать необходимости явно проверять доступность сети ОС через опрос (недокументированный) inet:getiflist/0 на наличие изменений.

...