public static MongoServerSettings FromUrl(MongoUrl url)
{
var serverSettings = new MongoServerSettings();
serverSettings.ConnectionMode = url.ConnectionMode;
serverSettings.ConnectTimeout = url.ConnectTimeout;
serverSettings.CredentialsStore = new MongoCredentialsStore();
serverSettings.DefaultCredentials = url.DefaultCredentials;
serverSettings.GuidRepresentation = url.GuidRepresentation;
serverSettings.IPv6 = url.IPv6;
serverSettings.MaxConnectionIdleTime = url.MaxConnectionIdleTime;
serverSettings.MaxConnectionLifeTime = url.MaxConnectionLifeTime;
serverSettings.MaxConnectionPoolSize = url.MaxConnectionPoolSize;
serverSettings.MinConnectionPoolSize = url.MinConnectionPoolSize;
serverSettings.ReadPreference = (url.ReadPreference == null) ? ReadPreference.Primary : url.ReadPreference;
serverSettings.ReplicaSetName = url.ReplicaSetName;
serverSettings.SecondaryAcceptableLatency = url.SecondaryAcceptableLatency;
serverSettings.Servers = new List<MongoServerAddress>(url.Servers);
serverSettings.SocketTimeout = url.SocketTimeout;
serverSettings.UseSsl = url.UseSsl;
serverSettings.VerifySslCertificate = url.VerifySslCertificate;
serverSettings.WaitQueueSize = url.ComputedWaitQueueSize;
serverSettings.WaitQueueTimeout = url.WaitQueueTimeout;
#pragma warning disable 618
serverSettings.WriteConcern = url.GetWriteConcern(MongoDefaults.SafeMode.Enabled);
#pragma warning restore
return serverSettings;
}