defmodule NOP.Element.Statistics do defmacro __using__([]) do quote do defp get_statistics_from_state(state) do Map.get(state, :statistics) end defp add_statistics_to_state(state, count) do old = get_statistics_from_state(state) Map.put(state, :statistics, old + count) end defp reset_statistics_to_state(state) do Map.put(state, :statistics, 0) end defp get_timestamp() do :erlang.now() end def diff_between_timestamp({_beg_g, beg_s, beg_m}, {_end_g, end_s, end_m}) do ((end_s * 1000) + end_m) - ((beg_s * 1000) + beg_m) end def handle_call(:get_statistics, _from, state) do {:reply, get_statistics_from_state(state), state} end def handle_cast(:reset_statistics, state) do {:noreply, reset_statistics_to_state(state)} end end end end