def socket
@socket_semaphore.synchronize do
used_socket = @socket
used_socket = nil if closed?
while used_socket.nil? || !@failure.nil?
@failure = nil
begin
used_socket = open_socket
connect(used_socket)
@connection_attempts = 0
rescue
@failure = $!
used_socket = nil
raise unless @reliable
$stderr.print "connect to #{@host} failed: #{$!} will retry(##{@connection_attempts}) in #{@reconnect_delay}\n"
raise Stomp::Error::MaxReconnectAttempts if max_reconnect_attempts?
sleep(@reconnect_delay)
@connection_attempts += 1
if @parameters
change_host
increase_reconnect_delay
end
end
end
@socket = used_socket
end
end