public static MongoUrl CreateUrl(this CallistoConnectorOptions options, ApplicationOptions app) { var builder = new MongoUrlBuilder(); builder.Parse(options.ConnectionString); if (Check.IsNull(app) || app.ApplicationName.IsNullOrEmpty()) { builder.ApplicationName = options.ApplicationName; } else { builder.ApplicationName = app.ApplicationName; } builder.ConnectTimeout = options.ConnectTimeout.IsNullOrEmpty() ? MongoDefaults.ConnectTimeout : options.ConnectTimeout.ToTimeSpan(); builder.MaxConnectionIdleTime = options.MaxConnectionIdleTime.IsNullOrEmpty() ? MongoDefaults.MaxConnectionIdleTime : options.MaxConnectionIdleTime.ToTimeSpan(); builder.MaxConnectionLifeTime = options.MaxConnectionLifeTime.IsNullOrEmpty() ? MongoDefaults.MaxConnectionLifeTime : options.MaxConnectionLifeTime.ToTimeSpan(); builder.MaxConnectionPoolSize = options.MaxConnectionPoolSize == 0 ? MongoDefaults.MaxConnectionPoolSize : options.MaxConnectionPoolSize; builder.MinConnectionPoolSize = options.MinConnectionPoolSize == 0 ? MongoDefaults.MinConnectionPoolSize : options.MinConnectionPoolSize; builder.HeartbeatInterval = options.HeartbeatInterval.IsNullOrEmpty() ? TimeSpan.FromSeconds(60) : options.HeartbeatInterval.ToTimeSpan(); builder.HeartbeatTimeout = options.HeartbeatTimeout.IsNullOrEmpty() ? TimeSpan.FromSeconds(60) : options.HeartbeatTimeout.ToTimeSpan(); builder.LocalThreshold = options.LocalThreshold.IsNullOrEmpty() ? MongoDefaults.LocalThreshold : options.LocalThreshold.ToTimeSpan(); builder.RetryWrites = options.RetryWrites; builder.ServerSelectionTimeout = options.ServerSelectionTimeout.IsNullOrEmpty() ? MongoDefaults.ServerSelectionTimeout : options.ServerSelectionTimeout.ToTimeSpan(); builder.SocketTimeout = options.SocketTimeout.IsNullOrEmpty() ? MongoDefaults.SocketTimeout : options.SocketTimeout.ToTimeSpan(); builder.WaitQueueTimeout = options.WaitQueueTimeout.IsNullOrEmpty() ? MongoDefaults.WaitQueueTimeout : options.WaitQueueTimeout.ToTimeSpan(); builder.IPv6 = options.Ipv6; return(builder.ToMongoUrl()); }