notify_and_wait_protocol.erl 495 B

12345678910111213141516
  1. -module(notify_and_wait_protocol).
  2. -behaviour(ranch_protocol).
  3. -export([start_link/3]).
  4. -export([init/4]).
  5. start_link(_, _, Opts = #{pid := TestPid}) ->
  6. Msg = maps:get(msg, Opts, connected),
  7. TerminateMsg = maps:get(terminate_msg, Opts, stop),
  8. Timeout = maps:get(timeout, Opts, infinity),
  9. Pid = spawn_link(?MODULE, init, [Msg, TestPid, TerminateMsg, Timeout]),
  10. {ok, Pid}.
  11. init(Msg, Pid, TerminateMsg, Timeout) ->
  12. Pid ! {self(), Msg},
  13. receive TerminateMsg -> ok after Timeout -> ok end.