def initialize(options, monitoring, cluster)
options = validate_options(options, cluster)
@options = options
@monitoring = monitoring
@cluster = cluster
@server_descriptions = {}
(servers = cluster.servers_list).each do |server|
@server_descriptions[server.address.to_s] = server.description
end
begin
server_descriptions.each do |address_str, desc|
unless desc.unknown?
desc.features.check_driver_support!
end
end
rescue Error::UnsupportedFeatures => e
@compatible = false
@compatibility_error = e
else
@compatible = true
end
@have_data_bearing_servers = false
@logical_session_timeout = server_descriptions.inject(nil) do |min, (address_str, desc)|
if desc.data_bearing?
@have_data_bearing_servers = true
break unless timeout = desc.logical_session_timeout
[timeout, (min || timeout)].min
else
min
end
end
if Mongo::Lint.enabled?
freeze
end
end