end
defp get_live_callee(proxy, callees, index, tries) when is_list(callees) do
- {_id, {pid, node}} = c = Enum.at(callees, index, Enum.at(callees, 0))
+ {_id, {_pid, node}} = c = Enum.at(callees, index, Enum.at(callees, 0))
- case GenServer.call({proxy, node}, {:is_up, pid}) do
+ nodes = [Node.self() | Node.list()]
+
+ case node in nodes do
true ->
c
false ->
- index =
- case index + 1 do
- ni when ni < length(callees) -> ni
- _ -> 0
- end
+ index = get_round_robin_index(index, callees)
get_live_callee(proxy, callees, index, tries - 1)
end
{:error, :no_live_callees}
end
+ defp get_round_robin_index(index, callees) do
+ case index + 1 do
+ ni when ni < length(callees) -> ni
+ _ -> 0
+ end
+ end
+
defp send_to_peer(msg, transport, pid) do
transport.send_request(pid, remove_nil_values(msg))
end