Skip to content

Commit

Permalink
simplify the CerebrateDnssd code
Browse files Browse the repository at this point in the history
  • Loading branch information
Carlo Cabanilla committed Apr 13, 2012
1 parent f45d829 commit 516793e
Show file tree
Hide file tree
Showing 2 changed files with 6 additions and 30 deletions.
10 changes: 2 additions & 8 deletions src/cerebrate.ex
Expand Up @@ -77,14 +77,8 @@ defmodule CerebrateWeb do
[metric, float_to_list(value)] [metric, float_to_list(value)]
end end


Process.whereis(:cerebrate_dnssd) <- {:query, Process.self()} peers = Enum.map CerebrateDnssd.get_peers(), fn({name, type, domain}) ->
peers = receive do [name, type, domain]
match: dnssd_state
Enum.map Erlang.dict.fetch(:peers, dnssd_state), fn({name, type, domain}) ->
[name, type, domain]
end
after: 2000
raise "Could not get peers"
end end
IO.inspect peers IO.inspect peers
reply = ["Data:", output, peers] reply = ["Data:", output, peers]
Expand Down
26 changes: 4 additions & 22 deletions src/cerebrate_checks.ex
Expand Up @@ -3,12 +3,6 @@ defmodule CerebrateDnssd do
@browse_timeout 1000 @browse_timeout 1000


def start_link(config) do def start_link(config) do
pid = spawn_link CerebrateDnssd, :start, [config]
Process.register :cerebrate_dnssd, pid
{:ok, pid}
end

def start(config) do
rpc_port = config[:rpc_port] rpc_port = config[:rpc_port]
Erlang.dnssd.register "Cerebrate-#{rpc_port}", CerebrateDnssd.__info__(:data)[:service_type], rpc_port Erlang.dnssd.register "Cerebrate-#{rpc_port}", CerebrateDnssd.__info__(:data)[:service_type], rpc_port
receive do receive do
Expand All @@ -17,36 +11,25 @@ defmodule CerebrateDnssd do
match: {:dnssd, ref, {:register, :remove, result}} match: {:dnssd, ref, {:register, :remove, result}}
IO.puts "Unexpected remove result: #{inspect(result)}" IO.puts "Unexpected remove result: #{inspect(result)}"
end end
run Erlang.dict.new() {:ok, Process.self()}
end

def run(state) do
new_state = Erlang.dict.store :peers, get_peers(), state
#IO.inspect Erlang.dict.fetch :peers, new_state
receive do
match: {:query, caller}
caller <- new_state
after: 1000
#IO.puts "No calls after 1000ms"
end
run new_state
end end



@doc """ @doc """
Makes a dnssd browse request for all the services of type @service_type. Makes a dnssd browse request for all the services of type @service_type.
Returns [{ServiceName, ServiceType, Domain}] Returns [{ServiceName, ServiceType, Domain}]
""" """
defp get_peers() do def get_peers() do
Erlang.dnssd.browse(CerebrateDnssd.__info__(:data)[:service_type]) Erlang.dnssd.browse(CerebrateDnssd.__info__(:data)[:service_type])
get_peers([]) get_peers([])
end end


defp get_peers(current_peers) do defp get_peers(current_peers) do
receive do receive do
match: {:dnssd, ref, {:browse, :add, result}} match: {:dnssd, ref, {:browse, :add, result}}
IO.puts "browse"
get_peers [result | current_peers] get_peers [result | current_peers]
after: CerebrateDnssd.__info__(:data)[:browse_timeout] after: CerebrateDnssd.__info__(:data)[:browse_timeout]
IO.puts "timeout"
current_peers current_peers
end end
end end
Expand Down Expand Up @@ -86,7 +69,6 @@ end
defmodule CerebrateCollector do defmodule CerebrateCollector do
def start_link(config) do def start_link(config) do
pid = spawn_link CerebrateCollector, :start, [config] pid = spawn_link CerebrateCollector, :start, [config]
Process.register :collector, pid
{:ok, pid} {:ok, pid}
end end


Expand Down

0 comments on commit 516793e

Please sign in to comment.