d2a45c0be2
new file: c/ff new file: c/main.rb new file: lib/gtk2.rb new file: lib/gtk2/base.rb new file: lib/net/external.rb new file: lib/net/helper.rb new file: lib/net/http.rb new file: lib/net/icmp.rb new file: lib/net/ping.rb new file: lib/net/tcp.rb new file: lib/net/udp.rb new file: lib/net/wmi.rb new file: m/ReadFile.rb new file: v/Vue1.rb new file: v/VueError.rb
90 lines
2.9 KiB
Ruby
90 lines
2.9 KiB
Ruby
require 'socket'
|
|
require 'timeout'
|
|
|
|
# The Net module serves as a namespace only.
|
|
#
|
|
module Net
|
|
|
|
# The Ping class serves as an abstract base class for all other Ping class
|
|
# types. You should not instantiate this class directly.
|
|
#
|
|
class Ping
|
|
# The version of the net-ping library.
|
|
VERSION = '1.7.1'
|
|
|
|
# The host to ping. In the case of Ping::HTTP, this is the URI.
|
|
attr_accessor :host
|
|
|
|
# The port to ping. This is set to the echo port (7) by default. The
|
|
# Ping::HTTP class defaults to port 80.
|
|
#
|
|
attr_accessor :port
|
|
|
|
# The maximum time a ping attempt is made.
|
|
attr_accessor :timeout
|
|
|
|
# If a ping fails, this value is set to the error that occurred which
|
|
# caused it to fail.
|
|
#
|
|
attr_reader :exception
|
|
|
|
# This value is set if a ping succeeds, but some other condition arose
|
|
# during the ping attempt which merits warning, e.g a redirect in the
|
|
# case of Ping::HTTP#ping.
|
|
#
|
|
attr_reader :warning
|
|
|
|
# The number of seconds (returned as a Float) that it took to ping
|
|
# the host. This is not a precise value, but rather a good estimate
|
|
# since there is a small amount of internal calculation that is added
|
|
# to the overall time.
|
|
#
|
|
attr_reader :duration
|
|
|
|
# The default constructor for the Net::Ping class. Accepts an optional
|
|
# +host+, +port+ and +timeout+. The port defaults to your echo port, or
|
|
# 7 if that happens to be undefined. The default timeout is 5 seconds.
|
|
#
|
|
# The host, although optional in the constructor, must be specified at
|
|
# some point before the Net::Ping#ping method is called, or else an
|
|
# ArgumentError will be raised.
|
|
#
|
|
# Yields +self+ in block context.
|
|
#
|
|
# This class is not meant to be instantiated directly. It is strictly
|
|
# meant as an interface for subclasses.
|
|
#
|
|
def initialize(host=nil, port=nil, timeout=5)
|
|
@host = host
|
|
@port = port || Socket.getservbyname('echo') || 7
|
|
@timeout = timeout
|
|
@exception = nil
|
|
@warning = nil
|
|
@duration = nil
|
|
|
|
yield self if block_given?
|
|
end
|
|
|
|
# The default interface for the Net::Ping#ping method. Each subclass
|
|
# should call super() before continuing with their own implementation in
|
|
# order to ensure that the @exception and @warning instance variables
|
|
# are reset.
|
|
#
|
|
# If +host+ is nil here, then it will use the host specified in the
|
|
# constructor. If the +host+ is nil and there was no host specified
|
|
# in the constructor then an ArgumentError is raised.
|
|
#--
|
|
# The @duration should be set in the subclass' ping method.
|
|
#
|
|
def ping(host = @host)
|
|
raise ArgumentError, 'no host specified' unless host
|
|
@exception = nil
|
|
@warning = nil
|
|
@duration = nil
|
|
end
|
|
|
|
alias ping? ping
|
|
alias pingecho ping
|
|
end
|
|
end
|