def setup(opts)
@slave_ok = opts.delete(:slave_ok)
@ssl = opts.delete(:ssl)
@unix = @host ? @host.end_with?('.sock') : false
if @ssl
@socket_class = Mongo::SSLSocket
elsif @unix
@socket_class = Mongo::UNIXSocket
else
@socket_class = Mongo::TCPSocket
end
@auths = opts.delete(:auths) || []
@pool_size = opts.delete(:pool_size) || 1
if opts[:timeout]
warn "The :timeout option has been deprecated " +
"and will be removed in the 2.0 release. Use :pool_timeout instead."
end
@pool_timeout = opts.delete(:pool_timeout) || opts.delete(:timeout) || 5.0
@op_timeout = opts.delete(:op_timeout) || nil
@connect_timeout = opts.delete(:connect_timeout) || 30
@logger = opts.delete(:logger) || nil
if @logger
write_logging_startup_message
end
if defined?(@slave_ok) && (@slave_ok) || defined?(@read_secondary) && @read_secondary
@read = :secondary_preferred
else
@read = opts.delete(:read) || :primary
end
Mongo::ReadPreference::validate(@read)
@tag_sets = opts.delete(:tag_sets) || []
@acceptable_latency = opts.delete(:secondary_acceptable_latency_ms) || 15
@write_concern = get_write_concern(opts)
connect if opts.fetch(:connect, true)
end