class Swarm::Engine::Volatile::Job

Attributes

buried[R]
data[R]
id[R]
queue[R]
reserved_by[R]

Public Class Methods

new(queue:, data:) click to toggle source
# File lib/swarm/engine/volatile/job.rb, line 7
def initialize(queue:, data:)
  @queue = queue
  @data = data
  @id = SecureRandom.uuid
  @reserved_by = nil
  @buried = false
end

Public Instance Methods

==(other) click to toggle source
# File lib/swarm/engine/volatile/job.rb, line 19
def ==(other)
  other.is_a?(self.class) &&
    other.id == id
end
available?() click to toggle source
# File lib/swarm/engine/volatile/job.rb, line 39
def available?
  !reserved? && !buried
end
bury() click to toggle source
# File lib/swarm/engine/volatile/job.rb, line 35
def bury
  @buried = true
end
delete() click to toggle source
# File lib/swarm/engine/volatile/job.rb, line 47
def delete
  queue.delete_job(self)
end
exists?() click to toggle source
# File lib/swarm/engine/volatile/job.rb, line 51
def exists?
  queue.has_job?(self)
end
release() click to toggle source
# File lib/swarm/engine/volatile/job.rb, line 43
def release
  @reserved_by = nil
end
reserve!(worker) click to toggle source
# File lib/swarm/engine/volatile/job.rb, line 24
def reserve!(worker)
  if reserved_by && reserved_by != worker
    raise AlreadyReservedError
  end
  @reserved_by = worker
end
reserved?() click to toggle source
# File lib/swarm/engine/volatile/job.rb, line 31
def reserved?
  !reserved_by.nil?
end
to_h() click to toggle source
# File lib/swarm/engine/volatile/job.rb, line 15
def to_h
  Swarm::Support.symbolize_keys(data)
end