X-Git-Url: https://git.xandkar.net/?p=beam_stats.git;a=blobdiff_plain;f=src%2Fbeam_stats_consumer_graphite.erl;h=251f92ed0a2e351f43686ecddfc25b23923b2599;hp=512247995601d0c93dc2b905b6663ca6354ac7d2;hb=a3fdbec97580ab23bdb68e61d4321d08b1c599da;hpb=8fe744e7d00da9039d59d3551d4f05a0e1b007d2 diff --git a/src/beam_stats_consumer_graphite.erl b/src/beam_stats_consumer_graphite.erl index 5122479..251f92e 100644 --- a/src/beam_stats_consumer_graphite.erl +++ b/src/beam_stats_consumer_graphite.erl @@ -32,9 +32,9 @@ -type state() :: #state{}. --define(DEFAULT_HOST , "localhost"). --define(DEFAULT_PORT , 2003). --define(DEFAULT_TIMEOUT , 5000). +-define(DEFAULT_HOST , "localhost"). +-define(DEFAULT_PORT , 2003). +-define(DEFAULT_TIMEOUT , 5000). -spec init([option()]) -> {non_neg_integer(), state()}. @@ -52,19 +52,18 @@ init(Options) -> -spec consume(beam_stats_consumer:queue(), state()) -> state(). consume(Q, #state{}=State1) -> - Payload = beam_stats_queue_to_binary(Q), + Payload = beam_stats_queue_to_iolists(Q), State2 = try_to_connect_if_no_socket(State1), try_to_send(State2, Payload). -spec terminate(state()) -> {}. terminate(#state{sock=SockOpt}) -> - ok = hope_option:iter(SockOpt, fun gen_tcp:close/1), - {}. + hope_option:iter(SockOpt, fun gen_tcp:close/1). %% ============================================================================ --spec try_to_send(state(), binary()) -> +-spec try_to_send(state(), iolist()) -> state(). try_to_send(#state{sock=none}=State, _) -> ?log_error("Sending failed. No socket in state."), @@ -75,7 +74,7 @@ try_to_send(#state{sock={some, Sock}}=State, Payload) -> of ok -> State ; {error, _}=Error -> - ?log_error("gen_tcp:send(~p, ~p) -> ~p", [Sock, Payload, Error]), + ?log_error("gen_tcp:send(~p, Payload) -> ~p", [Sock, Error]), % TODO: Maybe schedule retry? ok = gen_tcp:close(Sock), State#state{sock=none} @@ -105,14 +104,13 @@ try_to_connect_if_no_socket( State#state{sock = none} end. --spec beam_stats_queue_to_binary(beam_stats_consumer:queue()) -> - binary(). -beam_stats_queue_to_binary(Q) -> - Bins = [beam_stats_to_bins(B) || B <- queue:to_list(Q)], - iolist_to_binary(Bins). +-spec beam_stats_queue_to_iolists(beam_stats_consumer:queue()) -> + [iolist()]. +beam_stats_queue_to_iolists(Q) -> + [beam_stats_to_iolist(B) || B <- queue:to_list(Q)]. --spec beam_stats_to_bins(beam_stats:t()) -> - [binary()]. -beam_stats_to_bins(#beam_stats{}=BeamStats) -> +-spec beam_stats_to_iolist(beam_stats:t()) -> + [iolist()]. +beam_stats_to_iolist(#beam_stats{}=BeamStats) -> Msgs = beam_stats_msg_graphite:of_beam_stats(BeamStats), - lists:map(fun beam_stats_msg_graphite:to_bin/1, Msgs). + lists:map(fun beam_stats_msg_graphite:to_iolist/1, Msgs).