public static MongoClientSettings FromConnectionStringBuilder(MongoConnectionStringBuilder builder)
{
MongoCredentials defaultCredentials = null;
if (builder.Username != null && builder.Password != null)
{
defaultCredentials = new MongoCredentials(builder.Username, builder.Password);
}
var clientSettings = new MongoClientSettings();
clientSettings.ConnectionMode = builder.ConnectionMode;
clientSettings.ConnectTimeout = builder.ConnectTimeout;
clientSettings.CredentialsStore = new MongoCredentialsStore();
clientSettings.DefaultCredentials = defaultCredentials;
clientSettings.GuidRepresentation = builder.GuidRepresentation;
clientSettings.IPv6 = builder.IPv6;
clientSettings.MaxConnectionIdleTime = builder.MaxConnectionIdleTime;
clientSettings.MaxConnectionLifeTime = builder.MaxConnectionLifeTime;
clientSettings.MaxConnectionPoolSize = builder.MaxConnectionPoolSize;
clientSettings.MinConnectionPoolSize = builder.MinConnectionPoolSize;
clientSettings.ReadPreference = (builder.ReadPreference == null) ? ReadPreference.Primary : builder.ReadPreference.Clone();
clientSettings.ReplicaSetName = builder.ReplicaSetName;
clientSettings.SecondaryAcceptableLatency = builder.SecondaryAcceptableLatency;
clientSettings.Servers = new List<MongoServerAddress>(builder.Servers);
clientSettings.SocketTimeout = builder.SocketTimeout;
clientSettings.UseSsl = builder.UseSsl;
clientSettings.VerifySslCertificate = builder.VerifySslCertificate;
clientSettings.WaitQueueSize = builder.ComputedWaitQueueSize;
clientSettings.WaitQueueTimeout = builder.WaitQueueTimeout;
clientSettings.WriteConcern = builder.GetWriteConcern(true); // WriteConcern is enabled by default for MongoClient
return clientSettings;
}