class Redis::Client

def set_socket_timeout!(timeout)

def set_socket_timeout!(timeout)
  secs   = Integer(timeout)
  usecs  = Integer((timeout - secs) * 1_000_000)
  optval = [secs, usecs].pack("l_2")
  begin
    @sock.setsockopt Socket::SOL_SOCKET, Socket::SO_RCVTIMEO, optval
    @sock.setsockopt Socket::SOL_SOCKET, Socket::SO_SNDTIMEO, optval
  rescue Exception => e
    # Solaris, for one, does not like/support socket timeouts.
    log("Unable to use raw socket timeouts: #{e.class.name}: #{e.message}")
  end
end