this repo has no description
2
fork

Configure Feed

Select the types of activity you want to include in your feed.

Add SimServer reply and cast

+26 -6
+26 -6
lib/trinity/sim_server.ex
··· 31 31 end 32 32 end 33 33 34 + @spec receive_response(request_id, timeout) :: {:reply, term} | {:error, term} | :timeout 34 35 def receive_response(request_id, timeout) do 35 36 case get_sim() do 36 37 nil -> :gen_server.receive_response(request_id, timeout) 37 38 _sim -> sim_receive_response(request_id, timeout) 39 + end 40 + end 41 + 42 + @spec cast(GenServer.server, term) :: :ok 43 + def cast(server, request) do 44 + case get_sim() do 45 + nil -> GenServer.cast(server, request) 46 + _sim -> sim_cast(server, request) 47 + end 48 + end 49 + 50 + @spec reply(term, term) :: :ok 51 + def reply(client, reply) do 52 + case get_sim() do 53 + nil -> GenServer.reply(client, reply) 54 + _sim -> sim_reply(client, reply) 38 55 end 39 56 end 40 57 ··· 66 83 result 67 84 end 68 85 69 - @spec cast(GenServer.server, term) :: :ok 70 - def cast(server, request) do 71 - case get_sim() do 72 - nil -> GenServer.cast(server, request) 73 - _sim -> :noop 74 - end 86 + defp sim_cast(server, request) do 87 + SimProcess.send server, {:"$sim_cast", request} 88 + :ok 89 + end 90 + 91 + defp sim_reply(client, reply) do 92 + {_pid, [:alias | alias] = tag} = client 93 + SimProcess.send alias, {tag, reply} 94 + :ok 75 95 end 76 96 end