Current section

Files

Jump to
statsderl src statsderl_utils.erl
Raw

src/statsderl_utils.erl

-module(statsderl_utils).
-include("statsderl.hrl").
-compile(inline).
-compile({inline_size, 512}).
-export([
base_key/1,
error_msg/2,
timestamp/0,
timing_now/1,
timing_now_us/1
]).
%% public
-spec base_key(base_key()) ->
iodata().
base_key(hostname) ->
[hostname(), $.];
base_key(name) ->
[name(), $.];
base_key(sname) ->
[sname(), $.];
base_key(undefined) ->
"";
base_key(Key) when is_binary(Key) ->
[Key, $.];
base_key([]) ->
[];
base_key([H | T] = Key) ->
case io_lib:printable_unicode_list(Key) of
true ->
[Key, $.];
false ->
[base_key(H) | base_key(T)]
end.
-spec error_msg(string(), [term()]) ->
ok.
error_msg(Format, Data) ->
error_logger:error_msg("[statsderl] " ++ Format, Data).
-spec timestamp() ->
erlang:timestamp().
timestamp() ->
os:timestamp().
-spec timing_now(erlang:timestamp()) ->
non_neg_integer().
timing_now(Timestamp) ->
timing_now_us(Timestamp) div 1000.
-spec timing_now_us(erlang:timestamp()) ->
non_neg_integer().
timing_now_us(Timestamp) ->
timer:now_diff(statsderl_utils:timestamp(), Timestamp).
%% private
hostname() ->
{ok, Hostname} = inet:gethostname(),
Hostname.
name() ->
Name = atom_to_list(node()),
re:replace(Name, "@", ".", [global, {return, list}]).
sname() ->
string:sub_word(atom_to_list(node()), 1, $@).