Class: Taskinator::Process::Concurrent
- Inherits:
-
Taskinator::Process
- Object
- Taskinator::Process
- Taskinator::Process::Concurrent
- Defined in:
- lib/taskinator/process.rb
Instance Attribute Summary collapse
-
#complete_on ⇒ Object
readonly
Returns the value of attribute complete_on.
Attributes inherited from Taskinator::Process
#definition, #options, #parent, #queue, #uuid
Instance Method Summary collapse
- #accept(visitor) ⇒ Object
-
#initialize(definition, complete_on = CompleteOn::Default, options = {}) ⇒ Concurrent
constructor
A new instance of Concurrent.
- #start ⇒ Object
- #task_completed(task) ⇒ Object
- #tasks_completed?(*args) ⇒ Boolean
Methods inherited from Taskinator::Process
#<=>, base_key, define_concurrent_process_for, define_sequential_process_for, #enqueue, #no_tasks_defined?, #on_completed_entry, #on_failed_entry, #reload, #task_failed, #tasks, #to_s
Methods included from Taskinator::Persistence
add_process_to_list, deserialize, included, list_key, serialize
Constructor Details
#initialize(definition, complete_on = CompleteOn::Default, options = {}) ⇒ Concurrent
Returns a new instance of Concurrent.
170 171 172 173 |
# File 'lib/taskinator/process.rb', line 170 def initialize(definition, complete_on=CompleteOn::Default, ={}) super(definition, ) @complete_on = complete_on end |
Instance Attribute Details
#complete_on ⇒ Object (readonly)
Returns the value of attribute complete_on.
168 169 170 |
# File 'lib/taskinator/process.rb', line 168 def complete_on @complete_on end |
Instance Method Details
#accept(visitor) ⇒ Object
198 199 200 201 |
# File 'lib/taskinator/process.rb', line 198 def accept(visitor) super visitor.visit_attribute(:complete_on) end |
#start ⇒ Object
175 176 177 178 179 180 181 |
# File 'lib/taskinator/process.rb', line 175 def start if tasks.any? tasks.each(&:enqueue!) else complete! # weren't any tasks to start with end end |
#task_completed(task) ⇒ Object
183 184 185 186 187 |
# File 'lib/taskinator/process.rb', line 183 def task_completed(task) # when complete on first, then don't bother with subsequent tasks completing return if completed? || failed? complete! if can_complete? end |
#tasks_completed?(*args) ⇒ Boolean
189 190 191 192 193 194 195 196 |
# File 'lib/taskinator/process.rb', line 189 def tasks_completed?(*args) # TODO: optimize this if (complete_on == CompleteOn::First) tasks.any?(&:completed?) else tasks.all?(&:completed?) end end |