Packages
exq
0.18.0
0.23.0
0.22.0
0.21.0
0.20.0
0.19.0
0.18.0
0.17.0
0.16.2
0.16.1
0.16.0
0.15.0
0.14.0
0.13.5
0.13.4
0.13.3
0.13.2
0.13.1
0.13.0
0.12.2
0.12.1
0.12.0
0.11.0
0.10.1
0.10.0
0.9.1
0.9.0
0.8.7
0.8.6
0.8.5
0.8.4
0.8.3
0.8.2
0.8.1
0.8.0
0.7.3
0.7.2
0.7.1
0.7.0
0.6.5
0.6.4
0.6.3
0.6.2
0.6.1
0.6.0
0.5.0
0.4.4
0.4.3
0.4.2
0.4.1
0.4.0
0.3.0
0.2.3
0.2.2
0.2.1
0.2.0
0.1.4
0.1.3
0.1.2
0.1.1
0.1.0
0.0.2
Exq is a job processing library compatible with Resque / Sidekiq for the Elixir language.
Current section
Files
Jump to
Current section
Files
lib/exq/dequeue/local.ex
defmodule Exq.Dequeue.Local do
@behaviour Exq.Dequeue.Behaviour
defmodule State do
@moduledoc false
defstruct max: nil, current: 0
end
@impl true
def init(_, options) do
{:ok, %State{max: Keyword.fetch!(options, :concurrency)}}
end
@impl true
def stop(_), do: :ok
@impl true
def available?(state), do: {:ok, state.current < state.max, state}
@impl true
def dispatched(state), do: {:ok, %{state | current: state.current + 1}}
@impl true
def processed(state), do: {:ok, %{state | current: state.current - 1}}
@impl true
def failed(state), do: {:ok, %{state | current: state.current - 1}}
end