defmodule Cluster.EPMD do alias Cluster.EcsClusterInfo require Logger @magic_version 5 def start_link do :erl_epmd.start_link() end def register_node(name, port, family) do :erl_epmd.register_node(name, port, family) end def listen_port_please(_name, _hostname) do container_port = System.get_env("DISTRIBUTION_PORT") |> String.to_integer() {:ok, container_port} end @spec address_please(charlist(), charlist(), atom()) :: {:ok, :inet.ip_address(), integer(), integer()} | {:error, term()} def address_please(name, hostname, family) do nodename = :"#{name}@#{hostname}" case EcsClusterInfo.get_nodes() do %{^nodename => {ip, port}} -> {:ok, ip, port, @magic_version} _ -> :erl_epmd.address_please(name, hostname, family) end end def names(hostname) do :erl_epmd.names(hostname) end end