Current section

Files

Jump to
statsderl src statsderl_client.erl
Raw

src/statsderl_client.erl

-module(statsderl_client).
-include("statsderl.hrl").
-compile(inline).
-compile({inline_size, 512}).
-behavior(shackle_client).
-export([
init/1,
setup/2,
handle_request/2,
handle_data/2,
terminate/1
]).
-record(state, {
base_key :: iodata()
}).
-type state() :: #state {}.
%% shackle_server callbacks
-spec init(undefined) ->
{ok, state()}.
init(_Opts) ->
BaseKey = ?ENV(?ENV_BASEKEY, ?DEFAULT_BASEKEY),
{ok, #state {
base_key = statsderl_utils:base_key(BaseKey)
}}.
-spec setup(inet:socket(), state()) ->
{ok, state()}.
setup(_Socket, State) ->
{ok, State}.
-spec handle_request(term(), state()) ->
{ok, undefined, iolist(), state()}.
handle_request({cast, Data}, #state {
base_key = BaseKey
} = State) ->
{ok, undefined, [BaseKey, Data], State};
handle_request(Request, #state {
base_key = BaseKey
} = State) ->
Data = statsderl_protocol:encode(Request),
{ok, undefined, [BaseKey, Data], State}.
-spec handle_data(binary(), state()) ->
{ok, [], state()}.
handle_data(_Data, State) ->
{ok, [], State}.
-spec terminate(state()) -> ok.
terminate(_State) ->
ok.