Skip to main content

lib/systemd/socket_state.ex

defmodule Systemd.SocketState do
  @moduledoc """
  Common state properties for a systemd socket object.
  """

  @type t :: %__MODULE__{
          result: String.t() | nil,
          listen: [term()] | nil,
          accept: boolean() | nil,
          n_connections: non_neg_integer() | nil
        }

  defstruct [:result, :listen, :accept, :n_connections]

  @doc false
  @spec from_properties(map()) :: t()
  def from_properties(properties) when is_map(properties) do
    %__MODULE__{
      result: Map.get(properties, "Result"),
      listen: Map.get(properties, "Listen"),
      accept: Map.get(properties, "Accept"),
      n_connections: Map.get(properties, "NConnections")
    }
  end
end