Class: Swarm::Engine::Volatile::Job

Inherits:
Job
  • Object
show all
Defined in:
lib/swarm/engine/volatile/job.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(queue:, data:) ⇒ Job

Returns a new instance of Job.



7
8
9
10
11
12
13
# 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

Instance Attribute Details

#buriedObject (readonly)

Returns the value of attribute buried.



5
6
7
# File 'lib/swarm/engine/volatile/job.rb', line 5

def buried
  @buried
end

#dataObject (readonly)

Returns the value of attribute data.



5
6
7
# File 'lib/swarm/engine/volatile/job.rb', line 5

def data
  @data
end

#idObject (readonly)

Returns the value of attribute id.



5
6
7
# File 'lib/swarm/engine/volatile/job.rb', line 5

def id
  @id
end

#queueObject (readonly)

Returns the value of attribute queue.



5
6
7
# File 'lib/swarm/engine/volatile/job.rb', line 5

def queue
  @queue
end

#reserved_byObject (readonly)

Returns the value of attribute reserved_by.



5
6
7
# File 'lib/swarm/engine/volatile/job.rb', line 5

def reserved_by
  @reserved_by
end

Instance Method Details

#==(other) ⇒ Object



19
20
21
22
# File 'lib/swarm/engine/volatile/job.rb', line 19

def ==(other)
  other.is_a?(self.class) &&
    other.id == id
end

#available?Boolean

Returns:

  • (Boolean)


39
40
41
# File 'lib/swarm/engine/volatile/job.rb', line 39

def available?
  !reserved? && !buried
end

#buryObject



35
36
37
# File 'lib/swarm/engine/volatile/job.rb', line 35

def bury
  @buried = true
end

#deleteObject



47
48
49
# File 'lib/swarm/engine/volatile/job.rb', line 47

def delete
  queue.delete_job(self)
end

#exists?Boolean

Returns:

  • (Boolean)


51
52
53
# File 'lib/swarm/engine/volatile/job.rb', line 51

def exists?
  queue.has_job?(self)
end

#releaseObject



43
44
45
# File 'lib/swarm/engine/volatile/job.rb', line 43

def release
  @reserved_by = nil
end

#reserve!(worker) ⇒ Object



24
25
26
27
28
29
# 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?Boolean

Returns:

  • (Boolean)


31
32
33
# File 'lib/swarm/engine/volatile/job.rb', line 31

def reserved?
  !reserved_by.nil?
end

#to_hObject



15
16
17
# File 'lib/swarm/engine/volatile/job.rb', line 15

def to_h
  Swarm::Support.symbolize_keys(data)
end