Method: OpenTox::Task#wait_for_completion
- Defined in:
- lib/task.rb
#wait_for_completion(waiting_task = nil) ⇒ Object
waits for a task, unless time exceeds or state is no longer running
245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 |
# File 'lib/task.rb', line 245 def wait_for_completion( waiting_task=nil) waiting_task.waiting_for(self.uri) if waiting_task due_to_time = Time.new + DEFAULT_TASK_MAX_DURATION start_time = Time.new dur = 0 LOGGER.debug "start waiting for task "+@uri.to_s+" at: "+Time.new.to_s+", waiting at least until "+due_to_time.to_s # for extremely fast tasks check_state while self.running? or self.queued? sleep dur dur = [[(Time.new - start_time)/20.0,0.3].max,300.0].min #LOGGER.debug "task-object-id: #{self.object_id} - wait: #{"%.2f"%(Time.new - start_time)} - dur: #{"%.2f"%dur}" # if another (sub)task is waiting for self, set progress accordingly waiting_task.progress([OT.percentageCompleted].to_f) if waiting_task check_state if (Time.new > due_to_time) raise "max wait time exceeded ("+DEFAULT_TASK_MAX_DURATION.to_s+"sec), task: '"+@uri.to_s+"'" end end waiting_task.waiting_for(nil) if waiting_task LOGGER.debug "Task '"+[OT.hasStatus].to_s+"': "+@uri.to_s+", Result: "+[OT.resultURI].to_s end |