First commit
This commit is contained in:
commit
1dba0af064
36 changed files with 1065 additions and 0 deletions
31
chapter5/database_server.ex
Normal file
31
chapter5/database_server.ex
Normal file
|
|
@ -0,0 +1,31 @@
|
|||
defmodule DatabaseServer do
|
||||
def start do
|
||||
spawn(&loop/0)
|
||||
end
|
||||
|
||||
defp loop do
|
||||
receive do
|
||||
{:run_query, caller, query_def} ->
|
||||
send(caller, {:query_result, run_query(query_def)})
|
||||
end
|
||||
|
||||
loop()
|
||||
end
|
||||
|
||||
defp run_query(query_def) do
|
||||
Process.sleep(2000)
|
||||
"#{query_def} result"
|
||||
end
|
||||
|
||||
def run_async(server_pid, query_def) do
|
||||
send(server_pid, {:run_query, self(), query_def})
|
||||
end
|
||||
|
||||
def get_result do
|
||||
receive do
|
||||
{:query_result, result} -> result
|
||||
after
|
||||
5000 -> {:error, :timeout}
|
||||
end
|
||||
end
|
||||
end
|
||||
Loading…
Add table
Add a link
Reference in a new issue