def handle_poll(condition)
metric = self.directory[condition]
result = condition.test
messages = self.log_line(self, metric, condition, result)
if condition.notify && self.trigger?(metric, result)
self.notify(condition, messages.last)
end
condition.after
dest =
if result && condition.transition
condition.transition
else
metric.destination && metric.destination[result]
end
if dest
begin
self.move(dest)
rescue EventRegistrationFailedError
msg = watch.name + ' Event registration failed, moving back to previous state'
applog(watch, :info, msg)
dest = watch.state
retry
end
else
self.driver.schedule(condition)
end
end