Sha256: ade693f55ef4b5a2a9a94f6226dc01a8f0331116892e93c50617ea8eced31e59
Contents?: true
Size: 816 Bytes
Versions: 33
Compression:
Stored size: 816 Bytes
Contents
# Connect to a socket using the raw timeout, which responds better than the # builtin Timeout. require 'socket' module Volt class SocketWithTimeout def self.new(host, port, timeout=nil) if RUBY_PLATFORM == 'java' TCPSocket.new(host, port) else addr = Socket.getaddrinfo(host, nil) sock = Socket.new(Socket.const_get(addr[0][0]), Socket::SOCK_STREAM, 0) if timeout secs = Integer(timeout) usecs = Integer((timeout - secs) * 1_000_000) optval = [secs, usecs].pack("l_2") sock.setsockopt Socket::SOL_SOCKET, Socket::SO_RCVTIMEO, optval sock.setsockopt Socket::SOL_SOCKET, Socket::SO_SNDTIMEO, optval end sock.connect(Socket.pack_sockaddr_in(port, addr[0][3])) sock end end end end
Version data entries
33 entries across 33 versions & 1 rubygems