From: Siraaj Khandkar Date: Wed, 19 Aug 2015 15:48:31 +0000 (-0400) Subject: Flatten Graphite consumer options. X-Git-Tag: 0.0.0~12 X-Git-Url: https://git.xandkar.net/?p=beam_stats.git;a=commitdiff_plain;h=1b0b472139b24030a1271186726a07a461068e82 Flatten Graphite consumer options. --- diff --git a/src/beam_stats.app.src b/src/beam_stats.app.src index 24ab5dd..97b0c7d 100644 --- a/src/beam_stats.app.src +++ b/src/beam_stats.app.src @@ -16,11 +16,9 @@ , {consumers, [ {beam_stats_consumer_graphite, [ {consumption_interval , 60000} - , {connect_options, - [ {host , "localhost"} - , {port , 2003} - , {timeout , 5000} - ]} + , {host , "localhost"} + , {port , 2003} + , {timeout , 5000} ]} , {beam_stats_consumer_csv, [ {consumption_interval , 60000} diff --git a/src/beam_stats_consumer_graphite.erl b/src/beam_stats_consumer_graphite.erl index 85c002d..be4f1f9 100644 --- a/src/beam_stats_consumer_graphite.erl +++ b/src/beam_stats_consumer_graphite.erl @@ -5,8 +5,7 @@ -behaviour(beam_stats_consumer). -export_type( - [ option/0 - , connect_option/0 + [ option/0 ]). -export( @@ -15,35 +14,38 @@ , terminate/1 ]). --type connect_option() :: - {host , inet:ip_address() | inet:hostname()} - | {port , inet:port_number()} - | {timeout , timeout()} - . - -type option() :: {consumption_interval , non_neg_integer()} - | {connect_options , [connect_option()]} + | {host , inet:ip_address() | inet:hostname()} + | {port , inet:port_number()} + | {timeout , timeout()} . -record(state, - { connect_options = [] :: [connect_option()] - , sock = none :: hope_option:t(Socket :: port()) + { sock = none :: hope_option:t(Socket :: port()) + , host :: inet:ip_address() | inet:hostname() + , port :: inet:port_number() + , timeout :: timeout() }). -type state() :: #state{}. -define(GRAPHITE_PATH_PREFIX, "beam_stats"). +-define(DEFAULT_HOST , "localhost"). +-define(DEFAULT_PORT , 2003). +-define(DEFAULT_TIMEOUT , 5000). -spec init([option()]) -> {non_neg_integer(), state()}. init(Options) -> - ConnectOptions = hope_kv_list:get(Options, connect_options , []), - ConsumptionInterval = hope_kv_list:get(Options, consumption_interval, 60000), + Get = fun (Key, Default) -> hope_kv_list:get(Options, Key, Default) end, + ConsumptionInterval = Get(consumption_interval, 60000), State = #state - { connect_options = ConnectOptions - , sock = none + { sock = none + , host = Get(host , ?DEFAULT_HOST) + , port = Get(port , ?DEFAULT_PORT) + , timeout = Get(timeout , ?DEFAULT_TIMEOUT) }, {ConsumptionInterval, State}. @@ -83,13 +85,14 @@ try_to_send(#state{sock={some, Sock}}=State, Payload) -> state(). try_to_connect_if_no_socket(#state{sock={some, _}}=State) -> State; -try_to_connect_if_no_socket(#state{sock=none, connect_options=Options}=State) -> - DefaultHost = "localhost", - DefaultPort = 2003, - DefaultTimeout = 5000, - Host = hope_kv_list:get(Options, host , DefaultHost), - Port = hope_kv_list:get(Options, port , DefaultPort), - Timeout = hope_kv_list:get(Options, timeout, DefaultTimeout), +try_to_connect_if_no_socket( + #state + { sock = none + , host = Host + , port = Port + , timeout = Timeout + }=State +) -> case gen_tcp:connect(Host, Port, [binary, {active, false}], Timeout) of {ok, Sock} -> State#state{sock = {some, Sock}}