@@ -44,6 +44,7 @@ public class MongoServerSettings
44
44
private ReadPreference _readPreference ;
45
45
private string _replicaSetName ;
46
46
private SafeMode _safeMode ;
47
+ private TimeSpan _secondaryAcceptableLatency ;
47
48
private List < MongoServerAddress > _servers ;
48
49
private ReadOnlyCollection < MongoServerAddress > _serversReadOnly ;
49
50
private TimeSpan _socketTimeout ;
@@ -76,6 +77,7 @@ public MongoServerSettings()
76
77
_readPreference = ReadPreference . Primary ;
77
78
_replicaSetName = null ;
78
79
_safeMode = MongoDefaults . SafeMode ;
80
+ _secondaryAcceptableLatency = TimeSpan . FromMilliseconds ( 15 ) ;
79
81
_servers = new List < MongoServerAddress > { new MongoServerAddress ( "localhost" ) } ;
80
82
_serversReadOnly = new ReadOnlyCollection < MongoServerAddress > ( _servers ) ;
81
83
_socketTimeout = MongoDefaults . SocketTimeout ;
@@ -121,6 +123,7 @@ public MongoServerSettings(
121
123
ReadPreference readPreference ,
122
124
string replicaSetName ,
123
125
SafeMode safeMode ,
126
+ TimeSpan secondaryAcceptableLatency ,
124
127
IEnumerable < MongoServerAddress > servers ,
125
128
TimeSpan socketTimeout ,
126
129
bool useSsl ,
@@ -154,6 +157,7 @@ public MongoServerSettings(
154
157
_readPreference = readPreference ;
155
158
_replicaSetName = replicaSetName ;
156
159
_safeMode = safeMode ;
160
+ _secondaryAcceptableLatency = secondaryAcceptableLatency ;
157
161
_servers = new List < MongoServerAddress > ( servers ) ;
158
162
_serversReadOnly = new ReadOnlyCollection < MongoServerAddress > ( _servers ) ;
159
163
_socketTimeout = socketTimeout ;
@@ -361,6 +365,20 @@ public SafeMode SafeMode
361
365
}
362
366
}
363
367
368
+ /// <summary>
369
+ /// Gets or sets the acceptable latency for considering a replica set member for inclusion in load balancing
370
+ /// when using a read preference of Secondary, SecondaryPreferred, and Nearest.
371
+ /// </summary>
372
+ public TimeSpan SecondaryAcceptableLatency
373
+ {
374
+ get { return _secondaryAcceptableLatency ; }
375
+ set
376
+ {
377
+ if ( _isFrozen ) { throw new InvalidOperationException ( "MongoServerSettings is frozen." ) ; }
378
+ _secondaryAcceptableLatency = value ;
379
+ }
380
+ }
381
+
364
382
/// <summary>
365
383
/// Gets or sets the address of the server (see also Servers if using more than one address).
366
384
/// </summary>
@@ -488,8 +506,8 @@ public MongoServerSettings Clone()
488
506
{
489
507
return new MongoServerSettings ( _connectionMode , _connectTimeout , _credentialsStore . Clone ( ) , _defaultCredentials ,
490
508
_guidRepresentation , _ipv6 , _maxConnectionIdleTime , _maxConnectionLifeTime , _maxConnectionPoolSize ,
491
- _minConnectionPoolSize , _readPreference , _replicaSetName , _safeMode , _servers , _socketTimeout , _useSsl , _verifySslCertificate ,
492
- _waitQueueSize , _waitQueueTimeout ) ;
509
+ _minConnectionPoolSize , _readPreference , _replicaSetName , _safeMode , _secondaryAcceptableLatency , _servers ,
510
+ _socketTimeout , _useSsl , _verifySslCertificate , _waitQueueSize , _waitQueueTimeout ) ;
493
511
}
494
512
495
513
/// <summary>
@@ -526,6 +544,7 @@ public override bool Equals(object obj)
526
544
_readPreference == rhs . _readPreference &&
527
545
_replicaSetName == rhs . _replicaSetName &&
528
546
_safeMode == rhs . _safeMode &&
547
+ _secondaryAcceptableLatency == rhs . _secondaryAcceptableLatency &&
529
548
_servers . SequenceEqual ( rhs . _servers ) &&
530
549
_socketTimeout == rhs . _socketTimeout &&
531
550
_useSsl == rhs . _useSsl &&
@@ -626,6 +645,7 @@ public override int GetHashCode()
626
645
hash = 37 * hash + _readPreference . GetHashCode ( ) ;
627
646
hash = 37 * hash + ( ( _replicaSetName == null ) ? 0 : _replicaSetName . GetHashCode ( ) ) ;
628
647
hash = 37 * hash + _safeMode . GetHashCode ( ) ;
648
+ hash = 37 * hash + _secondaryAcceptableLatency . GetHashCode ( ) ;
629
649
foreach ( var server in _servers )
630
650
{
631
651
hash = 37 * hash + server . GetHashCode ( ) ;
@@ -663,6 +683,7 @@ public override string ToString()
663
683
sb . AppendFormat ( "ReadPreference={0};" , _readPreference ) ;
664
684
sb . AppendFormat ( "ReplicaSetName={0};" , _replicaSetName ) ;
665
685
sb . AppendFormat ( "SafeMode={0};" , _safeMode ) ;
686
+ sb . AppendFormat ( "SecondaryAcceptableLatency={0};" , _secondaryAcceptableLatency ) ;
666
687
sb . AppendFormat ( "Servers={0};" , string . Join ( "," , _servers . Select ( s => s . ToString ( ) ) . ToArray ( ) ) ) ;
667
688
sb . AppendFormat ( "SocketTimeout={0};" , _socketTimeout ) ;
668
689
sb . AppendFormat ( "Ssl={0};" , _useSsl ) ;
0 commit comments