1234567891011121314151617181920212223242526272829303132333435363738 |
- %% This module sends the process pid to the test pid
- %% found in the x-test-pid header, then changes the
- %% shutdown reason and closes the connection normally.
- -module(ws_shutdown_reason_commands_h).
- -behavior(cowboy_websocket).
- -export([init/2]).
- -export([websocket_init/1]).
- -export([websocket_handle/2]).
- -export([websocket_info/2]).
- init(Req, RunOrHibernate) ->
- TestPid = list_to_pid(binary_to_list(cowboy_req:header(<<"x-test-pid">>, Req))),
- {cowboy_websocket, Req, {TestPid, RunOrHibernate}}.
- websocket_init(State={TestPid, RunOrHibernate}) ->
- TestPid ! {ws_pid, self()},
- ShutdownReason = receive
- {TestPid, SR} ->
- SR
- after 1000 ->
- error(timeout)
- end,
- Commands = [
- {shutdown_reason, ShutdownReason},
- close
- ],
- case RunOrHibernate of
- run -> {Commands, State};
- hibernate -> {Commands, State, hibernate}
- end.
- websocket_handle(_, State) ->
- {[], State}.
- websocket_info(_, State) ->
- {[], State}.
|