defmodule QuickBEAM.LocksAPI do @moduledoc false @spec request_lock(list(), pid()) :: String.t() def request_lock([name, mode, if_available], caller_pid) do case QuickBEAM.LockManager.request_lock(name, mode, caller_pid, if_available) do :granted -> "granted" :not_available -> "not_available" :holder_down -> "holder_down" end end @spec release_lock([String.t()], pid()) :: nil def release_lock([name], caller_pid) do QuickBEAM.LockManager.release_lock(name, caller_pid) nil end @spec query_locks(term()) :: map() def query_locks(_args) do QuickBEAM.LockManager.query() end end