-module(beam_stats_msg_graphite).
-include("include/beam_stats.hrl").
+-include("include/beam_stats_ets_table.hrl").
-include("include/beam_stats_msg_graphite.hrl").
-export_type(
, context_switches = ContextSwitches
, reductions = Reductions
, run_queue = RunQueue
- , ets = _ETS
+ , ets = ETS
, processes = _Processes
},
<<NodeID/binary>>
, cons([N, <<"reductions">> ], Reductions , Ts)
, cons([N, <<"run_queue">> ], RunQueue , Ts)
| of_memory(Memory, NodeID, Ts)
- ].
+ ]
+ ++ of_ets(ETS, NodeID, Ts)
+ .
-spec of_memory([{atom(), non_neg_integer()}], binary(), erlang:timestamp()) ->
[t()].
end,
lists:map(ComponentToMessage, Memory).
+-spec of_ets(beam_stats_ets_table:t(), binary(), erlang:timestamp()) ->
+ [t()].
+of_ets(PerTableStats, <<NodeID/binary>>, Timestamp) ->
+ OfEtsTable = fun (Table) -> of_ets_table(Table, NodeID, Timestamp) end,
+ NestedMsgs = lists:map(OfEtsTable, PerTableStats),
+ lists:append(NestedMsgs).
+
+-spec of_ets_table(beam_stats_ets_table:t(), binary(), erlang:timestamp()) ->
+ [t()].
+of_ets_table(#beam_stats_ets_table
+ { id = ID
+ , name = Name
+ , size = Size
+ , memory = Memory
+ },
+ <<NodeID/binary>>,
+ Timestamp
+) ->
+ IDBin = beam_stats_ets_table:id_to_bin(ID),
+ NameBin = atom_to_binary(Name, latin1),
+ NameAndID = [NameBin, IDBin],
+ [ cons([NodeID, <<"ets_table">>, <<"size">> | NameAndID], Size , Timestamp)
+ , cons([NodeID, <<"ets_table">>, <<"memory">> | NameAndID], Memory, Timestamp)
+ ].
+
-spec cons([binary()], integer(), erlang:timestamp()) ->
t().
cons(Path, Value, Timestamp) ->