erlang - valim - Espere a Node.connect antes de usar: global.whereis_name
josé valim (1)
Tengo la siguiente función:
def join(id) do
if Node.connect(:"#{id}@127.0.0.1") do
send :global.whereis_name(id), {:join, id}
end
end
Recibo el error:
(ArgumentError) argument error
:erlang.send(:undefined, ...
lo cual supongo es porque Node.connect
hace una recopilación de información y cuando llamo :global.whereis_name
aún no ha terminado. Si lanzo un :timer.sleep(1000)
no recibo un error. ¿Hay una solución más elegante? Me gustaría repetir :global.whereis_name
hasta que :global.whereis_name
éxito o se alcance un tiempo de espera.
EDITAR:
Debo mencionar que ya tengo un nodo registrado con el nombre id
.
Podría hacer a :global.sync()
before :global.whereis_name(id)