Current section
Files
Jump to
Current section
Files
lib/adapter/semaphore.ex
defmodule AbsintheThrottle.Adapter.Semaphore do
def transaction(res, args \\ []) do
name = Keyword.fetch!(args, :name)
size = Keyword.fetch!(args, :size)
error = Keyword.get(args, :error, {:error, :timeout})
case Semaphore.call(name, size, fn -> {:ok, res} end) do
{:ok, _} = res -> res
{:error, :max} -> error
end
end
end