Skip to content

Commit 09bdd74

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

File tree

1 file changed

+10
-23
lines changed

1 file changed

+10
-23
lines changed

lib/Server.ex

Lines changed: 10 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,13 @@ defmodule BitcoinMining.Server do
44
{:ok,iflist}=:inet.getif()
55
make_distributed(Enum.reverse(iflist),length(iflist))
66
k=String.to_integer(hd(parameter))
7-
server_id=spawn_link(fn() -> server_print() end)
8-
7+
server_id=spawn_link(fn() -> server_print(k) end)
8+
:global.register_name(:serve,server_id)
99
{:ok, pid} = Task.Supervisor.start_link()
10-
for _ <- 1..100 do
10+
logproc = System.schedulers_online()
11+
for _ <- 1..logproc do
1112
Task.Supervisor.async(pid,fn() -> miner(server_id,k) end)
1213
end
13-
spawn_remote(server_id,k)
1414
receive do: (_ -> :ok)
1515
end
1616

@@ -36,38 +36,25 @@ defmodule BitcoinMining.Server do
3636
end
3737
end
3838

39-
def spawn_remote(s_id,k) do
40-
empty?(Node.list)
41-
remotep_id=Node.spawn(List.last(Node.list()),fn() -> miner(s_id,k) end)
42-
Process.monitor(remotep_id)
43-
receive do: (_ -> spawn_remote(s_id,k))
44-
end
45-
46-
def empty?([]) do
47-
empty?(Node.list)
48-
end
49-
def empty?(list) when is_list(list) do
50-
nil
51-
end
52-
53-
def server_print() do
39+
def server_print(k) do
5440
receive do
41+
{:getk,client} -> send(client, {:sendk,k})
5542
msg -> IO.puts msg
5643
end
57-
server_print()
44+
server_print(k)
5845
end
5946

6047
def miner(s_id,k) do
61-
msgt = "asukhtankar" <> randomizer()
48+
msgt = "asukhtankar" <> randomizer(9)
6249
temp = :crypto.hash(:sha256, msgt) |> Base.encode16 |> String.downcase
6350
if(String.slice(temp,0,k) === String.duplicate("0",k)) do
6451
send(s_id, msgt <> "\t" <> temp)
6552
end
6653
miner(s_id,k)
6754
end
6855

69-
def randomizer do
70-
:crypto.strong_rand_bytes(10) |> Base.url_encode64 |> binary_part(0, 10) |> String.downcase
56+
def randomizer(l) do
57+
:crypto.strong_rand_bytes(l) |> Base.url_encode64 |> binary_part(0, l) |> String.downcase
7158
end
7259

7360
end

0 commit comments

Comments
 (0)