def handle_poll(condition)
metric = self.directory[condition]
begin
result = condition.test
rescue Object => e
cname = condition.class.to_s.split('::').last
message = format("Unhandled exception in %s condition - (%s): %s\n%s",
cname, e.class, e.message, e.backtrace.join("\n"))
applog(self, :error, message)
result = false
end
messages = self.log_line(self, metric, condition, result)
if result && condition.notify
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 = self.name + ' Event registration failed, moving back to previous state'
applog(self, :info, msg)
dest = self.state
retry
end
else
self.driver.schedule(condition)
end
end