class Net::DNS::Resolver::DnsTimeout

Attributes

seconds[R]

Public Class Methods

new(seconds) click to toggle source
# File lib/net/dns/resolver/timeouts.rb, line 12
def initialize(seconds)
  if seconds.is_a? Numeric and seconds >= 0
    @seconds = seconds
  else
    raise ArgumentError, "Invalid value for tcp timeout"
  end
end

Public Instance Methods

pretty_to_s() click to toggle source
# File lib/net/dns/resolver/timeouts.rb, line 30
def pretty_to_s
  transform(@seconds)
end
timeout(&block) click to toggle source

Executes the method's block. If the block execution terminates before sec seconds has passed, it returns true. If not, it terminates the execution and raises Timeout::Error. If @seconds is 0 or nil, no timeout is set.

# File lib/net/dns/resolver/timeouts.rb, line 38
def timeout(&block)
  raise LocalJumpError, "no block given" unless block_given?
  Timeout.timeout(@seconds, &block)
end
to_s() click to toggle source

Returns a string representation of the timeout corresponding to the number of @seconds.

# File lib/net/dns/resolver/timeouts.rb, line 22
def to_s
  if @seconds == 0
    @output.to_s
  else
    @seconds.to_s
  end
end

Private Instance Methods

transform(secs) click to toggle source
# File lib/net/dns/resolver/timeouts.rb, line 46
def transform(secs)
  case secs
    when 0
      to_s
    when 1..59
      "#{secs} seconds"
    when 60..3559
      "#{secs / 60} minutes and #{secs % 60} seconds"
    else
      hours = secs / 3600
      secs -= (hours * 3600)
      "#{hours} hours, #{secs / 60} minutes and #{secs % 60} seconds"
  end
end