12345678910111213141516171819202122232425262728293031323334 |
- %% 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.
|