aboutsummaryrefslogtreecommitdiffstats
path: root/examples/rest_stream_response/src
diff options
context:
space:
mode:
Diffstat (limited to 'examples/rest_stream_response/src')
-rw-r--r--examples/rest_stream_response/src/rest_stream_response_app.erl39
-rw-r--r--examples/rest_stream_response/src/rest_stream_response_sup.erl23
-rw-r--r--examples/rest_stream_response/src/toppage_handler.erl37
3 files changed, 0 insertions, 99 deletions
diff --git a/examples/rest_stream_response/src/rest_stream_response_app.erl b/examples/rest_stream_response/src/rest_stream_response_app.erl
deleted file mode 100644
index 46857f4..0000000
--- a/examples/rest_stream_response/src/rest_stream_response_app.erl
+++ /dev/null
@@ -1,39 +0,0 @@
-%% Feel free to use, reuse and abuse the code in this file.
-
-%% @private
--module(rest_stream_response_app).
--behaviour(application).
-
-%% API.
--export([start/2]).
--export([stop/1]).
-
-%% API.
-
-start(_Type, _Args) ->
- Table = ets:new(stream_tab, []),
- generate_rows(Table, 1000),
- Dispatch = cowboy_router:compile([
- {'_', [
- {"/[:v1]", [{v1, int}], toppage_handler, Table}
- ]}
- ]),
- {ok, _} = cowboy:start_http(http, 100, [{port, 8080}], [
- {env, [{dispatch, Dispatch}]}
- ]),
- rest_stream_response_sup:start_link().
-
-stop(_State) ->
- ok.
-
-generate_rows(_Table, 0) ->
- ok;
-generate_rows(Table, N) ->
- ets:insert(Table, {key(), val(), val()}),
- generate_rows(Table, N - 1).
-
-key() -> key(10).
-key(N) -> key(<< (random:uniform(26) - 1) >>, N - 1).
-key(Acc, 0) -> binary_part(base64:encode(Acc), 0, 8);
-key(Acc, N) -> key(<< Acc/binary, (random:uniform(26) - 1) >>, N - 1).
-val() -> random:uniform(50).
diff --git a/examples/rest_stream_response/src/rest_stream_response_sup.erl b/examples/rest_stream_response/src/rest_stream_response_sup.erl
deleted file mode 100644
index 73142d4..0000000
--- a/examples/rest_stream_response/src/rest_stream_response_sup.erl
+++ /dev/null
@@ -1,23 +0,0 @@
-%% Feel free to use, reuse and abuse the code in this file.
-
-%% @private
--module(rest_stream_response_sup).
--behaviour(supervisor).
-
-%% API.
--export([start_link/0]).
-
-%% supervisor.
--export([init/1]).
-
-%% API.
-
--spec start_link() -> {ok, pid()}.
-start_link() ->
- supervisor:start_link({local, ?MODULE}, ?MODULE, []).
-
-%% supervisor.
-
-init([]) ->
- Procs = [],
- {ok, {{one_for_one, 10, 10}, Procs}}.
diff --git a/examples/rest_stream_response/src/toppage_handler.erl b/examples/rest_stream_response/src/toppage_handler.erl
deleted file mode 100644
index 61f5ab9..0000000
--- a/examples/rest_stream_response/src/toppage_handler.erl
+++ /dev/null
@@ -1,37 +0,0 @@
-%% Feel free to use, reuse and abuse the code in this file.
-
-%% @doc Streaming handler.
--module(toppage_handler).
-
--export([init/2]).
--export([content_types_provided/2]).
--export([streaming_csv/2]).
-
-init(Req, Table) ->
- {cowboy_rest, Req, Table}.
-
-content_types_provided(Req, State) ->
- {[
- {{<<"text">>, <<"csv">>, []}, streaming_csv}
- ], Req, State}.
-
-streaming_csv(Req, Table) ->
- N = cowboy_req:binding(v1, Req, 1),
- MS = [{{'$1', '$2', '$3'}, [{'==', '$2', N}], ['$$']}],
- {{stream, result_streamer(Table, MS)}, Req, Table}.
-
-result_streamer(Table, MS) ->
- fun (Socket, Transport) ->
- send_records(Socket, Transport, ets:select(Table, MS, 1))
- end.
-
-send_records(Socket, Transport, {[Rec], Cont}) ->
- timer:sleep(500),
- send_line(Socket, Transport, Rec),
- send_records(Socket, Transport, ets:select(Cont));
-send_records(_Socket, _Transport, '$end_of_table') ->
- ok.
-
-send_line(Socket, Transport, [Key, V1, V2]) ->
- Transport:send(Socket,
- [Key, $,, integer_to_list(V1), $,, integer_to_list(V2), $\r, $\n]).