class Selenium::WebDriver::SocketPoller
Constants
- CONNECTED_ERRORS
- CONNECT_TIMEOUT
- NOT_CONNECTED_ERRORS
Public Class Methods
Source
# File lib/selenium/webdriver/common/socket_poller.rb, line 26 def initialize(host, port, timeout = 0, interval = 0.25) @host = host @port = Integer(port) @timeout = Float(timeout) @interval = interval end
Public Instance Methods
Source
# File lib/selenium/webdriver/common/socket_poller.rb, line 51 def closed? with_timeout { !listening? } end
Returns true if the server has stopped listening within the given timeout, false otherwise.
@return [Boolean]
Source
# File lib/selenium/webdriver/common/socket_poller.rb, line 40 def connected? with_timeout { listening? } end
Returns true if the server is listening within the given timeout, false otherwise.
@return [Boolean]
Private Instance Methods
Source
# File lib/selenium/webdriver/common/socket_poller.rb, line 105 def conn_completed?(sock) sock.getsockopt(Socket::SOL_SOCKET, Socket::SO_ERROR).int.zero? end
Source
# File lib/selenium/webdriver/common/socket_poller.rb, line 121 def current_time Process.clock_gettime(Process::CLOCK_MONOTONIC) end
Source
# File lib/selenium/webdriver/common/socket_poller.rb, line 71 def listening? TCPSocket.new(@host, @port).close true rescue *NOT_CONNECTED_ERRORS false end
we use a plain TCPSocket here since JRuby has issues closing socket see github.com/jruby/jruby/issues/5709
Source
# File lib/selenium/webdriver/common/socket_poller.rb, line 101 def socket_writable?(sock) sock.wait_writable(CONNECT_TIMEOUT) end
Source
# File lib/selenium/webdriver/common/socket_poller.rb, line 109 def with_timeout max_time = current_time + @timeout until current_time > max_time return true if yield sleep @interval end false end