diff options
Diffstat (limited to 'examples/clock/src/stream_handler.erl')
-rw-r--r-- | examples/clock/src/stream_handler.erl | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/examples/clock/src/stream_handler.erl b/examples/clock/src/stream_handler.erl new file mode 100644 index 0000000..4f18b9d --- /dev/null +++ b/examples/clock/src/stream_handler.erl @@ -0,0 +1,36 @@ +%% Feel free to use, reuse and abuse the code in this file. + +%% @doc Stream handler for clock synchronizing. +-module(stream_handler). + +-export([init/4]). +-export([stream/3]). +-export([info/3]). +-export([terminate/2]). + +-define(PERIOD, 1000). + +init(_Transport, Req, _Opts, _Active) -> + io:format("bullet init~n"), + _ = erlang:send_after(?PERIOD, self(), refresh), + {ok, Req, undefined}. + +stream(<<"ping">>, Req, State) -> + io:format("ping received~n"), + {reply, <<"pong">>, Req, State}; +stream(Data, Req, State) -> + io:format("stream received ~s~n", [Data]), + {ok, Req, State}. + +info(refresh, Req, State) -> + _ = erlang:send_after(?PERIOD, self(), refresh), + DateTime = cowboy_clock:rfc1123(), + io:format("clock refresh timeout: ~s~n", [DateTime]), + {reply, DateTime, Req, State}; +info(Info, Req, State) -> + io:format("info received ~p~n", [Info]), + {ok, Req, State}. + +terminate(_Req, _State) -> + io:format("bullet terminate~n"), + ok. |