class Kuroko2::Token

def cancelable?

def cancelable?
  case status
  when WORKING, WAITING
    children.many? && children.all? do |child|
      child.status == FINISHED || child.cancelable?
    end
  when FAILURE
    true
  else
    false
  end
end

def critical?

def critical?
  status == CRITICAL
end

def failure?

def failure?
  status == FAILURE
end

def finished?

def finished?
  status == FINISHED
end

def mark_as_critical(error)

def mark_as_critical(error)
  self.status  = CRITICAL
  self.message = error.message
end

def mark_as_failure

def mark_as_failure
  self.status = FAILURE
end

def mark_as_finished

def mark_as_finished
  self.status = FINISHED
end

def mark_as_waiting

def mark_as_waiting
  self.status = WAITING
end

def mark_as_working

def mark_as_working
  self.status = WORKING
end

def retryable?

def retryable?
  failure?
end

def set_default_values

def set_default_values
  self.uuid    ||= SecureRandom.uuid
  self.message ||= ''
  self.context ||= {}
  self.status  ||= WORKING
end

def skippable?

def skippable?
  failure? || waiting?
end

def status_name

def status_name
  STATUSES[status].to_s
end

def waiting?

def waiting?
  status == WAITING
end

def working?

def working?
  status == WORKING
end