Packages
exq
0.13.3
0.24.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/support/job.ex
defmodule Exq.Support.Job do
@moduledoc """
Serializable Job format used by Exq
"""
defstruct error_message: nil,
error_class: nil,
failed_at: nil,
retry: false,
retry_count: 0,
processor: nil,
queue: nil,
class: nil,
args: nil,
jid: nil,
finished_at: nil,
enqueued_at: nil
alias Exq.Support.Config
def decode(serialized) do
Config.serializer().decode_job(serialized)
end
def encode(nil), do: nil
def encode(%__MODULE__{} = job) do
encode(%{
error_message: encode(job.error_message),
error_class: job.error_class,
failed_at: job.failed_at,
retry: job.retry,
retry_count: job.retry_count,
processor: job.processor,
queue: job.queue,
class: job.class,
args: job.args,
jid: job.jid,
finished_at: job.finished_at,
enqueued_at: job.enqueued_at
})
end
def encode(%RuntimeError{message: message}), do: %{message: message}
def encode(%{} = job_map) do
job_map =
case Map.fetch(job_map, :error_message) do
{:ok, val} ->
Map.put(job_map, :error_message, encode(val))
:error ->
job_map
end
Config.serializer().encode_job(job_map)
end
def encode(val), do: val
end