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.



9
10
11
12
13
14
15
16
# File 'lib/swarm/engine/volatile/job.rb', line 9

def initialize(queue:, data:)
  super()
  @queue = queue
  @data = data
  @id = SecureRandom.uuid
  @reserved_by = nil
  @buried = false
end

Instance Attribute Details

#buriedObject (readonly)

Returns the value of attribute buried.



7
8
9
# File 'lib/swarm/engine/volatile/job.rb', line 7

def buried
  @buried
end

#dataObject (readonly)

Returns the value of attribute data.



7
8
9
# File 'lib/swarm/engine/volatile/job.rb', line 7

def data
  @data
end

#idObject (readonly)

Returns the value of attribute id.



7
8
9
# File 'lib/swarm/engine/volatile/job.rb', line 7

def id
  @id
end

#queueObject (readonly)

Returns the value of attribute queue.



7
8
9
# File 'lib/swarm/engine/volatile/job.rb', line 7

def queue
  @queue
end

#reserved_byObject (readonly)

Returns the value of attribute reserved_by.



7
8
9
# File 'lib/swarm/engine/volatile/job.rb', line 7

def reserved_by
  @reserved_by
end

Instance Method Details

#==(other) ⇒ Object



22
23
24
25
# File 'lib/swarm/engine/volatile/job.rb', line 22

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

#available?Boolean

Returns:

  • (Boolean)


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

def available?
  !reserved? && !buried
end

#buryObject



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

def bury
  @buried = true
end

#deleteObject



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

def delete
  queue.delete_job(self)
end

#exists?Boolean

Returns:

  • (Boolean)


55
56
57
# File 'lib/swarm/engine/volatile/job.rb', line 55

def exists?
  queue.job_exists?(self)
end

#releaseObject



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

def release
  @reserved_by = nil
end

#reserve!(worker) ⇒ Object



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

def reserve!(worker)
  if reserved_by && reserved_by != worker
    raise AlreadyReservedError
  end

  @reserved_by = worker
end

#reserved?Boolean

Returns:

  • (Boolean)


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

def reserved?
  !reserved_by.nil?
end

#to_hObject



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

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