module IOWithDeadlineMixin::ViaWaitMethod
Private Instance Methods
with_deadline(deadline, exception) { || ... }
click to toggle source
# File lib/tcp-client/mixin/io_with_deadline.rb, line 44 def with_deadline(deadline, exception) loop do case ret = yield when :wait_writable remaining_time = deadline.remaining_time or raise(exception) raise(exception) if wait_writable(remaining_time).nil? when :wait_readable remaining_time = deadline.remaining_time or raise(exception) raise(exception) if wait_readable(remaining_time).nil? else return ret end end rescue Errno::ETIMEDOUT raise(exception) end