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

Version Path
volt-0.9.7.pre8 lib/volt/server/message_bus/peer_to_peer/socket_with_timeout.rb
volt-0.9.7.pre7 lib/volt/server/message_bus/peer_to_peer/socket_with_timeout.rb
volt-0.9.7.pre6 lib/volt/server/message_bus/peer_to_peer/socket_with_timeout.rb
volt-0.9.7.pre5 lib/volt/server/message_bus/peer_to_peer/socket_with_timeout.rb
volt-0.9.7.pre3 lib/volt/server/message_bus/peer_to_peer/socket_with_timeout.rb
volt-0.9.7.pre2 lib/volt/server/message_bus/peer_to_peer/socket_with_timeout.rb
volt-0.9.6 lib/volt/server/message_bus/peer_to_peer/socket_with_timeout.rb
volt-0.9.6.pre3 lib/volt/server/message_bus/peer_to_peer/socket_with_timeout.rb
volt-0.9.6.pre2 lib/volt/server/message_bus/peer_to_peer/socket_with_timeout.rb
volt-0.9.6.pre1 lib/volt/server/message_bus/peer_to_peer/socket_with_timeout.rb
volt-0.9.5 lib/volt/server/message_bus/peer_to_peer/socket_with_timeout.rb
volt-0.9.5.pre12 lib/volt/server/message_bus/peer_to_peer/socket_with_timeout.rb
volt-0.9.5.pre11 lib/volt/server/message_bus/peer_to_peer/socket_with_timeout.rb
volt-0.9.5.pre9 lib/volt/server/message_bus/peer_to_peer/socket_with_timeout.rb
volt-0.9.5.pre8 lib/volt/server/message_bus/peer_to_peer/socket_with_timeout.rb
volt-0.9.5.pre7 lib/volt/server/message_bus/peer_to_peer/socket_with_timeout.rb
volt-0.9.5.pre6 lib/volt/server/message_bus/peer_to_peer/socket_with_timeout.rb
volt-0.9.5.pre5 lib/volt/server/message_bus/peer_to_peer/socket_with_timeout.rb
volt-0.9.5.pre4 lib/volt/server/message_bus/peer_to_peer/socket_with_timeout.rb
volt-0.9.5.pre3 lib/volt/server/message_bus/peer_to_peer/socket_with_timeout.rb