def initialize(login = '', passcode = '', host = 'localhost', port = 61613, reliable = false)
if login.is_a?(Hash)
@parameters = login
first_host = @parameters[:hosts][0]
@login = first_host[:login]
@passcode = first_host[:passcode]
@host = first_host[:host]
@port = first_host[:port] || Connection::default_port(first_host[:ssl])
@reliable = true
elsif login =~ /^stomp:\/\/#{url_regex}/
@login = $2 || ""
@passcode = $3 || ""
@host = $4
@port = $5.to_i
@reliable = false
elsif login =~ /^failover:(\/\/)?\(stomp(\+ssl)?:\/\/#{url_regex}(,stomp(\+ssl)?:\/\/#{url_regex}\))+(\?(.*))?$/
first_host = {}
first_host[:ssl] = !$2.nil?
@login = first_host[:login] = $4 || ""
@passcode = first_host[:passcode] = $5 || ""
@host = first_host[:host] = $6
@port = first_host[:port] = $7.to_i || Connection::default_port(first_host[:ssl])
options = $16 || ""
parts = options.split(/&|=/)
options = Hash[*parts]
hosts = [first_host] + parse_hosts(login)
@parameters = {}
@parameters[:hosts] = hosts
@parameters.merge! filter_options(options)
@reliable = true
else
@login = login
@passcode = passcode
@host = host
@port = port.to_i
@reliable = reliable
end
check_arguments!
@id_mutex = Mutex.new
@ids = 1
if @parameters
@connection = Connection.new(@parameters)
else
@connection = Connection.new(@login, @passcode, @host, @port, @reliable)
end
start_listeners
end