X-Git-Url: https://git.xandkar.net/?a=blobdiff_plain;f=src%2Fbeam_stats_consumer_graphite.erl;h=9f13a6653549d86ab353b470dd70119d6c2c7c9a;hb=b817f0301d321bdaa97ec97d8d190469e519659b;hp=036f6c9840f28bc21f937640ac22f12c32a0850a;hpb=b8e10327d7c189769c32e439ec2b1cf9773afade;p=beam_stats.git diff --git a/src/beam_stats_consumer_graphite.erl b/src/beam_stats_consumer_graphite.erl index 036f6c9..9f13a66 100644 --- a/src/beam_stats_consumer_graphite.erl +++ b/src/beam_stats_consumer_graphite.erl @@ -32,7 +32,6 @@ -type state() :: #state{}. --define(PATH_PREFIX , <<"beam_stats">>). -define(DEFAULT_HOST , "localhost"). -define(DEFAULT_PORT , 2003). -define(DEFAULT_TIMEOUT , 5000). @@ -53,7 +52,7 @@ 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). @@ -65,7 +64,7 @@ terminate(#state{sock=SockOpt}) -> %% ============================================================================ --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."), @@ -106,17 +105,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_to_bins(beam_stats:t()) -> - [binary()]. -beam_stats_to_bins(#beam_stats{}=BeamStats) -> - MsgAddPrefix = - fun (M) -> beam_stats_msg_graphite:add_path_prefix(M, ?PATH_PREFIX) end, - Msgs1 = beam_stats_msg_graphite:of_beam_stats(BeamStats), - Msgs2 = lists:map(MsgAddPrefix, Msgs1), - lists:map(fun beam_stats_msg_graphite:to_bin/1, Msgs2). +-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_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_iolist/1, Msgs).