Skip to content

Commit a3841fc

Browse files
author
Shikha Mehta
authored
Changed distribution logic to support multiple clients at a time
1 parent 16f97fd commit a3841fc

File tree

1 file changed

+30
-1
lines changed

1 file changed

+30
-1
lines changed

lib/Worker.ex

Lines changed: 30 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,22 @@ defmodule BitcoinMining.Worker do
55
make_distributed(Enum.reverse(iflist),length(iflist))
66

77
Node.connect(String.to_atom("server@" <> hd(parameter)))
8+
client_id = spawn(fn -> talk_to_server() end)
9+
:global.sync()
10+
send(:global.whereis_name(:serve),{:getk,client_id})
11+
receive do: (_ -> :ok)
12+
end
13+
14+
def talk_to_server() do
15+
{:ok, pid} = Task.Supervisor.start_link()
16+
logproc = System.schedulers_online()
17+
receive do
18+
{:sendk,k_value} -> k = k_value
19+
end
20+
:global.sync()
21+
for _ <- 1..logproc do
22+
Task.Supervisor.async(pid,fn() -> miner(:global.whereis_name(:serve),k) end)
23+
end
824
receive do: (_ -> :ok)
925
end
1026

@@ -20,7 +36,7 @@ defmodule BitcoinMining.Worker do
2036
IO.puts "Could not make current node distributed."
2137
end
2238
else
23-
server_node_name = String.to_atom("worker@" <> current_ip)
39+
server_node_name = String.to_atom(randomizer(5) <> "_wkr@" <> current_ip)
2440
Node.start(server_node_name)
2541
Node.set_cookie(server_node_name,:monster)
2642
end
@@ -30,4 +46,17 @@ defmodule BitcoinMining.Worker do
3046
end
3147
end
3248

49+
def miner(s_id,k) do
50+
msgt = "asukhtankar" <> randomizer(9)
51+
temp = :crypto.hash(:sha256, msgt) |> Base.encode16 |> String.downcase
52+
if(String.slice(temp,0,k) === String.duplicate("0",k)) do
53+
send(s_id, msgt <> "\t" <> temp)
54+
end
55+
miner(s_id,k)
56+
end
57+
58+
def randomizer(l) do
59+
:crypto.strong_rand_bytes(l) |> Base.url_encode64 |> binary_part(0, l) |> String.downcase
60+
end
61+
3362
end

0 commit comments

Comments
 (0)