From a81dc8af9db314e074512e7fc096978c64c9bed1 Mon Sep 17 00:00:00 2001 From: jdamanalo Date: Thu, 9 Mar 2023 15:54:41 +0800 Subject: Add timeout to cowboy_loop LH: I have added a test that does both hibernate and timeout and fixed a related issue. I also tweaked the docs and tests. --- test/handlers/loop_handler_timeout_init_h.erl | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 test/handlers/loop_handler_timeout_init_h.erl (limited to 'test/handlers/loop_handler_timeout_init_h.erl') diff --git a/test/handlers/loop_handler_timeout_init_h.erl b/test/handlers/loop_handler_timeout_init_h.erl new file mode 100644 index 0000000..ba0b34b --- /dev/null +++ b/test/handlers/loop_handler_timeout_init_h.erl @@ -0,0 +1,23 @@ +%% This module implements a loop handler that reads +%% the request query for a timeout value, then sends +%% itself a message after 1000ms. It replies a 200 when +%% the message does not timeout and a 299 otherwise. + +-module(loop_handler_timeout_init_h). + +-export([init/2]). +-export([info/3]). +-export([terminate/3]). + +init(Req, _) -> + #{timeout := Timeout} = cowboy_req:match_qs([{timeout, int}], Req), + erlang:send_after(200, self(), message), + {cowboy_loop, Req, undefined, Timeout}. + +info(message, Req, State) -> + {stop, cowboy_req:reply(200, Req), State}; +info(timeout, Req, State) -> + {stop, cowboy_req:reply(<<"299 OK!">>, Req), State}. + +terminate(stop, _, _) -> + ok. -- cgit v1.2.3