mirror of
https://github.com/ninenines/cowboy.git
synced 2025-07-14 20:30:23 +00:00
39 lines
927 B
Erlang
39 lines
927 B
Erlang
![]() |
%% 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}.
|