Guest User

Untitled

a guest
Mar 23rd, 2018
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.03 KB | None | 0 0
  1. defmodule First do
  2. use GenServer
  3.  
  4. def start_link() do
  5. GenServer.start_link(__MODULE__, %{}, name: __MODULE__)
  6. end
  7.  
  8. def init(state) do
  9. {:ok, Map.put(state, :process_list, [])}
  10. end
  11.  
  12. def handle_call({:start_second, name}, _from, state) do
  13.  
  14. process_list = Map.get(state, :process_list)
  15. {:ok, pid} = SecondProcess.start(name)
  16. {:ok, Map.put(state, :process_list, [{name, pid}|process_list])}
  17.  
  18. {:reply, reply, state1}
  19. end
  20. def handle_call(_msg, _from, state) do
  21. {:reply, :ok, state}
  22. end
  23.  
  24. def handle_cast({:test, name}, state) do
  25.  
  26. process_list = Map.get(state, :process_list)
  27. {_, pid} = List.keyfind(process_list, name, 0)
  28.  
  29. :erlang.process_info(pid, :messages) |> IO.inspect
  30.  
  31. SecondProcess.test(pid)
  32.  
  33. IO.puts("TEST FINISHED")
  34.  
  35. {:noreply, state}
  36. end
  37. def handle_cast(_msg, state) do
  38. {:noreply, state}
  39. end
  40.  
  41. def start_second_process(name) do
  42. GenServer.call(__MODULE__, {:start_second, name})
  43. end
  44.  
  45. def test(user_name) do
  46. GenServer.cast(__MODULE__, {:test, user_name})
  47. IO.puts("TEST STARTED")
  48. end
Add Comment
Please, Sign In to add comment