Class: Bricolage::FileTaskQueue

Inherits:
Object
  • Object
show all
Defined in:
lib/bricolage/taskqueue.rb

Defined Under Namespace

Classes: Task

Instance Method Summary collapse

Constructor Details

#initialize(path:) ⇒ FileTaskQueue

Returns a new instance of FileTaskQueue.



65
66
67
68
# File 'lib/bricolage/taskqueue.rb', line 65

def initialize(path:)
  @path = path
  @queue = []
end

Instance Method Details

#cancel_jobnet(jobnet, message) ⇒ Object



149
150
151
152
153
# File 'lib/bricolage/taskqueue.rb', line 149

def cancel_jobnet(jobnet, message)
  unlock
  FileUtils.rm_f(@path)
  @queue.clear
end

#consume_eachObject



97
98
99
100
101
102
103
104
105
106
107
108
# File 'lib/bricolage/taskqueue.rb', line 97

def consume_each
  lock
  save
  while task = @queue.first
    task_result = yield task.job
    break unless task_result.success?
    @queue.shift
    save
  end
ensure
  unlock
end

#eachObject



91
92
93
94
95
# File 'lib/bricolage/taskqueue.rb', line 91

def each
  @queue.each do |task|
    yield task.job
  end
end

#empty?Boolean

Returns:

  • (Boolean)


70
71
72
# File 'lib/bricolage/taskqueue.rb', line 70

def empty?
  @queue.empty?
end

#enqueue_jobnet(jobnet) ⇒ Object



85
86
87
88
89
# File 'lib/bricolage/taskqueue.rb', line 85

def enqueue_jobnet(jobnet)
  jobnet.sequential_jobs.each do |ref|
    @queue.push Task.new(ref)
  end
end

#locked?(jobnet) ⇒ Boolean

Returns:

  • (Boolean)


129
130
131
# File 'lib/bricolage/taskqueue.rb', line 129

def locked?(jobnet)
  lock_file_path.exist?
end

#restore_jobnet(jobnet) ⇒ Object



78
79
80
81
82
83
# File 'lib/bricolage/taskqueue.rb', line 78

def restore_jobnet(jobnet)
  return unless File.exist?(@path)
  File.foreach(@path) do |line|
    @queue.push Task.deserialize(line)
  end
end

#sizeObject



74
75
76
# File 'lib/bricolage/taskqueue.rb', line 74

def size
  @queue.size
end

#unlock_help(jobnet) ⇒ Object



145
146
147
# File 'lib/bricolage/taskqueue.rb', line 145

def unlock_help(jobnet)
  "remove the file: #{lock_file_path}"
end