defmodule Systemd.TimerState do
@moduledoc """
Common state properties for a systemd timer object.
"""
@type t :: %__MODULE__{
result: String.t() | nil,
unit: String.t() | nil,
next_elapse_usec_realtime: non_neg_integer() | nil,
last_trigger_usec: non_neg_integer() | nil,
timers_calendar: [term()] | nil
}
defstruct [:result, :unit, :next_elapse_usec_realtime, :last_trigger_usec, :timers_calendar]
@doc false
@spec from_properties(map()) :: t()
def from_properties(properties) when is_map(properties) do
%__MODULE__{
result: Map.get(properties, "Result"),
unit: Map.get(properties, "Unit"),
next_elapse_usec_realtime: Map.get(properties, "NextElapseUSecRealtime"),
last_trigger_usec: Map.get(properties, "LastTriggerUSec"),
timers_calendar: Map.get(properties, "TimersCalendar")
}
end
end