Узел
Функции, связанные с узлами виртуальной машины.
Некоторые из функций в этом модуле встроены компилятором, подобно функциям в модуле Kernel, и они явно помечены в их документации как "встроенные компилятором". Для получения дополнительной информации об встроенных функциях, ознакомьтесь с модулем Kernel.
Типы
Функции
- alive?()
Возвращает
true, если локальный узел активен.- connect(узел)
Устанавливает соединение с
node.- disconnect(узел)
Принудительно разрывает соединение с узлом.
- get_cookie()
Возвращает магическое cookie локального узла.
- list()
Возвращает список всех видимых узлов в системе, исключая локальный узел.
- list(аргументы)
Возвращает список узлов в соответствии с заданными аргументами.
- monitor(узел, флаг)
Отслеживает состояние узла.
- monitor(узел, флаг, опции)
Ведет себя как
monitor/2, но позволяет указать дополнительные опции, а именно:allow_passive_connect.- ping(узел)
Пытается установить соединение с узлом.
- self()
Возвращает текущий узел.
- set_cookie(узел \\ Node.self(), cookie)
Устанавливает магическое cookie узла
nodeна атомcookie.- spawn(узел, функция)
Возвращает PID нового процесса, запущенного путем применения
funкnode. Еслиnodeне существует, возвращается бесполезный PID.- spawn(узел, функция, опции)
Возвращает PID нового процесса, запущенного путем применения
funкnode.- spawn(узел, модуль, функция, аргументы)
Возвращает PID нового процесса, запущенного путем применения
module.function(args)кnode.- spawn(узел, модуль, функция, аргументы, опции)
Возвращает PID нового процесса, запущенного путем применения
module.function(args)кnode.- spawn_link(узел, функция)
Возвращает PID нового связанного процесса, запущенного путем применения
funкnode.- spawn_link(узел, модуль, функция, аргументы)
Возвращает PID нового связанного процесса, запущенного путем применения
module.function(args)кnode.- spawn_monitor(узел, функция)
Запускает данную функцию на узле, отслеживает ее и возвращает PID и ссылку на отслеживание.
- spawn_monitor(узел, модуль, функция, аргументы)
Запускает указанный модуль и функцию, передавая заданные аргументы на узел, отслеживает его и возвращает PID и ссылку на отслеживание.
- start(имя, тип \\ :longnames, время_тика \\ 15000)
Преобразует нераспределенный узел в распределенный узел.
- stop()
Преобразует распределенный узел в нераспределенный узел.
alive?()Source
@spec alive?() :: boolean()
Возвращает true, если локальный узел активен.
То есть, если узел может быть частью распределённой системы.
connect(node)Source
@spec connect(t()) :: boolean() | :ignored
Устанавливает соединение с node.
Возвращает true при успехе, false в противном случае и атом :ignored если локальный узел не активен.
Для получения дополнительной информации см. :net_kernel.connect_node/1.
disconnect(node)Source
@spec disconnect(t()) :: boolean() | :ignored
Принудительно разрывает соединение с узлом.
Для node это будет выглядеть так, как будто локальный узел упал. Эта функция в основном используется в протоколах проверки подлинности сети Erlang. Возвращает true если разрыв соединения выполнен успешно, в противном случае false. Если локальный узел не активен, функция возвращает :ignored.
Для получения дополнительной информации см. :erlang.disconnect_node/1.
get_cookie()Source
@spec get_cookie() :: atom()
Возвращает магическое cookie локального узла.
Возвращает cookie, если узел активен, в противном случае :nocookie.
list()Source
@spec list() :: [t()]
Возвращает список всех видимых узлов в системе, исключая локальный узел.
То же, что и list(:visible).
Встраивается компилятором.
list(args)Source
@spec list(state() | [state()]) :: [t()]
Возвращает список узлов в соответствии с заданными аргументами.
Результат, возвращаемый при аргументе в виде списка, представляет собой список узлов, удовлетворяющих дизъюнкции (дизъюнкциям) элементов списка.
Для получения дополнительной информации см. :erlang.nodes/1.
Встраивается компилятором.
monitor(node, flag)Source
@spec monitor(t(), boolean()) :: true
Отслеживает состояние узла.
Если flag равно true, мониторинг включен. Если flag равно false, мониторинг выключен.
Для получения дополнительной информации см. :erlang.monitor_node/2.
Для мониторинга изменений состояния всех узлов см. :net_kernel.monitor_nodes/2.
monitor(node, flag, options)Source
@spec monitor(t(), boolean(), [:allow_passive_connect]) :: true
Ведёт себя как monitor/2, за исключением того, что позволяет указать дополнительный параметр, а именно :allow_passive_connect.
Для получения дополнительной информации см. :erlang.monitor_node/3.
Для мониторинга изменений состояния всех узлов см. :net_kernel.monitor_nodes/2.
ping(node)Source
@spec ping(t()) :: :pong | :pang
Попытка установить соединение с узлом.
Возвращает :pang в случае неудачи или :pong в случае успеха.
Примеры
iex> Node.ping(:unknown_node) :pang
self()Source
@spec self() :: t()
Возвращает текущий узел.
Возвращает то же, что и встроенная функция node().
set_cookie(node \\ Node.self(), cookie)Source
@spec set_cookie(t(), atom()) :: true
Устанавливает магическое cookie узла node в атом cookie.
По умолчанию узел — Node.self/0, локальный узел. Если node является локальным узлом, функция также устанавливает cookie всех других неизвестных узлов в cookie.
Эта функция вызовет FunctionClauseError, если указанный node не активен.
spawn(node, fun)Source
@spec spawn(t(), (-> any())) :: pid()
Возвращает PID нового процесса, запущенного путём применения fun к node. Если node не существует, возвращается бесполезный PID.
Список доступных параметров см. в :erlang.spawn/2.
Встраивается компилятором.
spawn(node, fun, opts)Source
@spec spawn(t(), (-> any()), Process.spawn_opts()) :: pid() | {pid(), reference()} Возвращает PID нового процесса, запущенного путём применения fun к node.
Если node не существует, возвращается бесполезный PID.
Список доступных параметров см. в :erlang.spawn_opt/3.
Встраивается компилятором.
spawn(node, module, fun, args)Source
@spec spawn(t(), module(), atom(), [any()]) :: pid()
Возвращает PID нового процесса, запущенного путём применения module.function(args) к node.
Если node не существует, возвращается бесполезный PID.
Список доступных параметров см. в :erlang.spawn/4.
Встраивается компилятором.
spawn(node, module, fun, args, opts)Source
@spec spawn(t(), module(), atom(), [any()], Process.spawn_opts()) ::
pid() | {pid(), reference()} Возвращает PID нового процесса, запущенного путём применения module.function(args) к node.
Если node не существует, возвращается бесполезный PID.
Список доступных параметров см. в :erlang.spawn/4.
Встраивается компилятором.
spawn_link(node, fun)Source
@spec spawn_link(t(), (-> any())) :: pid()
Возвращает PID нового связанного процесса, запущенного путём применения fun к node.
Связь создаётся между вызывающим процессом и новым процессом атомарно. Если node не существует, возвращается бесполезный PID (и из-за связи будет получен сигнал выхода с причиной :noconnection).
Встраивается компилятором.
spawn_link(node, module, fun, args)Source
@spec spawn_link(t(), module(), atom(), [any()]) :: pid()
Возвращает PID нового связанного процесса, запущенного путём применения module.function(args) к node.
Связь создаётся между вызывающим процессом и новым процессом атомарно. Если node не существует, возвращается бесполезный PID (и из-за связи будет получен сигнал выхода с причиной :noconnection).
Встраивается компилятором.
spawn_monitor(node, fun)Source
@spec spawn_monitor(t(), (-> any())) :: {pid(), reference()} Запускает заданную функцию на узле, отслеживает её и возвращает её PID и ссылку на мониторинг.
Встраивается компилятором.
spawn_monitor(node, module, fun, args)Source
@spec spawn_monitor(t(), module(), atom(), [any()]) :: {pid(), reference()} Запускает указанный модуль и функцию, передавая заданные аргументы на узле, отслеживает его и возвращает его PID и ссылку на мониторинг.
Встроено компилятором.
start(name, type \\ :longnames, tick_time \\ 15000)Source
@spec start(node(), :longnames | :shortnames, non_neg_integer()) ::
{:ok, pid()} | {:error, term()} Преобразует узел, не участвующий в распределённой системе, в узел, участвующий в распределённой системе.
Эта функция запускает :net_kernel и другие связанные процессы.
Эта функция редко используется на практике. Вместо этого узлы именуются и запускаются через командную строку с использованием флагов --sname и --name. Если вам необходимо использовать эту функцию для динамического именования узла, убедитесь, что процесс операционной системы epmd запущен, вызвав epmd -daemon.
Вызов этой функции, когда распределение уже запущено, либо через командную строку, либо динамически, вернёт ошибку.
Примеры
{:ok, pid} = Node.start(:example, :shortnames, 15000) stop()Source
@spec stop() :: :ok | {:error, :not_allowed | :not_found} Преобразует узел, участвующий в распределённой системе, в узел, не участвующий в распределённой системе.
Для других узлов в сети это эквивалентно отключению узла. Возможен только в том случае, если узел был запущен с Node.start/3, в противном случае возвращает {:error, :not_allowed}. Возвращает {:error, :not_found} если локальный узел не активен.
© 2012 Plataformatec
Licensed under the Apache License, Version 2.0.
https://hexdocs.pm/elixir/1.15.4/Node.html