defmodule Systemd.ServiceState do
@moduledoc """
Common state properties for a systemd service object.
"""
@type t :: %__MODULE__{
type: String.t() | nil,
result: String.t() | nil,
exec_main_pid: non_neg_integer() | nil,
exec_main_status: non_neg_integer() | nil,
restart: String.t() | nil
}
defstruct [:type, :result, :exec_main_pid, :exec_main_status, :restart]
@doc false
@spec from_properties(map()) :: t()
def from_properties(properties) when is_map(properties) do
%__MODULE__{
type: Map.get(properties, "Type"),
result: Map.get(properties, "Result"),
exec_main_pid: Map.get(properties, "ExecMainPID"),
exec_main_status: Map.get(properties, "ExecMainStatus"),
restart: Map.get(properties, "Restart")
}
end
end