0
Fork 0
mirror of https://github.com/ninenines/cowboy.git synced 2025-07-16 05:00:24 +00:00
cowboy/test/http_SUITE_data/http_loop_stream_recv.erl
Loïc Hoguin 8cbd8c1882 Rename 'shutdown' close reason and tuples to 'stop'
The 'shutdown' atom has a specific meaning inside OTP. We are
instead going to use 'stop' which is pretty much the equivalent
of what we actually do. 'shutdown' is now reserved for future
special processes implementation.
2014-11-07 19:22:36 +02:00

34 lines
693 B
Erlang

%% Feel free to use, reuse and abuse the code in this file.
-module(http_loop_stream_recv).
-export([init/2]).
-export([info/3]).
-export([terminate/3]).
init(Req, _) ->
receive after 100 -> ok end,
self() ! stream,
{cowboy_loop, Req, undefined, 100}.
info(stream, Req, undefined) ->
stream(Req, 1, <<>>).
stream(Req, ID, Acc) ->
case cowboy_req:body(Req) of
{ok, <<>>, Req2} ->
{stop, cowboy_req:reply(200, Req2), undefined};
{_, Data, Req2} ->
parse_id(Req2, ID, << Acc/binary, Data/binary >>)
end.
parse_id(Req, ID, Data) ->
case Data of
<< ID:32, Rest/bits >> ->
parse_id(Req, ID + 1, Rest);
_ ->
stream(Req, ID, Data)
end.
terminate(stop, _, _) ->
ok.