@@ -38,6 +38,7 @@ public class MongoClientSettings : IEquatable<MongoClientSettings>
38
38
private TimeSpan _maxConnectionLifeTime ;
39
39
private int _maxConnectionPoolSize ;
40
40
private int _minConnectionPoolSize ;
41
+ private UTF8Encoding _readEncoding ;
41
42
private ReadPreference _readPreference ;
42
43
private string _replicaSetName ;
43
44
private TimeSpan _secondaryAcceptableLatency ;
@@ -49,6 +50,7 @@ public class MongoClientSettings : IEquatable<MongoClientSettings>
49
50
private int _waitQueueSize ;
50
51
private TimeSpan _waitQueueTimeout ;
51
52
private WriteConcern _writeConcern ;
53
+ private UTF8Encoding _writeEncoding ;
52
54
53
55
// the following fields are set when Freeze is called
54
56
private bool _isFrozen ;
@@ -70,6 +72,7 @@ public MongoClientSettings()
70
72
_maxConnectionLifeTime = MongoDefaults . MaxConnectionLifeTime ;
71
73
_maxConnectionPoolSize = MongoDefaults . MaxConnectionPoolSize ;
72
74
_minConnectionPoolSize = MongoDefaults . MinConnectionPoolSize ;
75
+ _readEncoding = null ;
73
76
_readPreference = ReadPreference . Primary ;
74
77
_replicaSetName = null ;
75
78
_secondaryAcceptableLatency = MongoDefaults . SecondaryAcceptableLatency ;
@@ -81,6 +84,7 @@ public MongoClientSettings()
81
84
_waitQueueSize = MongoDefaults . ComputedWaitQueueSize ;
82
85
_waitQueueTimeout = MongoDefaults . WaitQueueTimeout ;
83
86
_writeConcern = WriteConcern . Acknowledged ;
87
+ _writeEncoding = null ;
84
88
}
85
89
86
90
// public properties
@@ -213,6 +217,19 @@ public int MinConnectionPoolSize
213
217
}
214
218
}
215
219
220
+ /// <summary>
221
+ /// Gets or sets the Read Encoding.
222
+ /// </summary>
223
+ public UTF8Encoding ReadEncoding
224
+ {
225
+ get { return _readEncoding ; }
226
+ set
227
+ {
228
+ if ( _isFrozen ) { throw new InvalidOperationException ( "MongoClientSettings is frozen." ) ; }
229
+ _readEncoding = value ;
230
+ }
231
+ }
232
+
216
233
/// <summary>
217
234
/// Gets or sets the read preferences.
218
235
/// </summary>
@@ -386,6 +403,19 @@ public WriteConcern WriteConcern
386
403
}
387
404
}
388
405
406
+ /// <summary>
407
+ /// Gets or sets the Write Encoding.
408
+ /// </summary>
409
+ public UTF8Encoding WriteEncoding
410
+ {
411
+ get { return _writeEncoding ; }
412
+ set
413
+ {
414
+ if ( _isFrozen ) { throw new InvalidOperationException ( "MongoClientSettings is frozen." ) ; }
415
+ _writeEncoding = value ;
416
+ }
417
+ }
418
+
389
419
// public operators
390
420
/// <summary>
391
421
/// Determines whether two <see cref="MongoClientSettings"/> instances are equal.
@@ -440,6 +470,7 @@ public static MongoClientSettings FromConnectionStringBuilder(MongoConnectionStr
440
470
clientSettings . MaxConnectionLifeTime = builder . MaxConnectionLifeTime ;
441
471
clientSettings . MaxConnectionPoolSize = builder . MaxConnectionPoolSize ;
442
472
clientSettings . MinConnectionPoolSize = builder . MinConnectionPoolSize ;
473
+ clientSettings . ReadEncoding = null ; // ReadEncoding must be provided in code
443
474
clientSettings . ReadPreference = ( builder . ReadPreference == null ) ? ReadPreference . Primary : builder . ReadPreference . Clone ( ) ;
444
475
clientSettings . ReplicaSetName = builder . ReplicaSetName ;
445
476
clientSettings . SecondaryAcceptableLatency = builder . SecondaryAcceptableLatency ;
@@ -451,6 +482,7 @@ public static MongoClientSettings FromConnectionStringBuilder(MongoConnectionStr
451
482
clientSettings . WaitQueueSize = builder . ComputedWaitQueueSize ;
452
483
clientSettings . WaitQueueTimeout = builder . WaitQueueTimeout ;
453
484
clientSettings . WriteConcern = builder . GetWriteConcern ( true ) ; // WriteConcern is enabled by default for MongoClient
485
+ clientSettings . WriteEncoding = null ; // WriteEncoding must be provided in code
454
486
return clientSettings ;
455
487
}
456
488
@@ -480,6 +512,7 @@ public static MongoClientSettings FromUrl(MongoUrl url)
480
512
clientSettings . MaxConnectionLifeTime = url . MaxConnectionLifeTime ;
481
513
clientSettings . MaxConnectionPoolSize = url . MaxConnectionPoolSize ;
482
514
clientSettings . MinConnectionPoolSize = url . MinConnectionPoolSize ;
515
+ clientSettings . ReadEncoding = null ; // ReadEncoding must be provided in code
483
516
clientSettings . ReadPreference = ( url . ReadPreference == null ) ? ReadPreference . Primary : url . ReadPreference ;
484
517
clientSettings . ReplicaSetName = url . ReplicaSetName ;
485
518
clientSettings . SecondaryAcceptableLatency = url . SecondaryAcceptableLatency ;
@@ -491,6 +524,7 @@ public static MongoClientSettings FromUrl(MongoUrl url)
491
524
clientSettings . WaitQueueSize = url . ComputedWaitQueueSize ;
492
525
clientSettings . WaitQueueTimeout = url . WaitQueueTimeout ;
493
526
clientSettings . WriteConcern = url . GetWriteConcern ( true ) ; // WriteConcern is enabled by default for MongoClient
527
+ clientSettings . WriteEncoding = null ; // WriteEncoding must be provided in code
494
528
return clientSettings ;
495
529
}
496
530
@@ -511,6 +545,7 @@ public MongoClientSettings Clone()
511
545
clone . _maxConnectionLifeTime = _maxConnectionLifeTime ;
512
546
clone . _maxConnectionPoolSize = _maxConnectionPoolSize ;
513
547
clone . _minConnectionPoolSize = _minConnectionPoolSize ;
548
+ clone . _readEncoding = _readEncoding ;
514
549
clone . _readPreference = _readPreference . Clone ( ) ;
515
550
clone . _replicaSetName = _replicaSetName ;
516
551
clone . _secondaryAcceptableLatency = _secondaryAcceptableLatency ;
@@ -522,6 +557,7 @@ public MongoClientSettings Clone()
522
557
clone . _waitQueueSize = _waitQueueSize ;
523
558
clone . _waitQueueTimeout = _waitQueueTimeout ;
524
559
clone . _writeConcern = _writeConcern . Clone ( ) ;
560
+ clone . _writeEncoding = _writeEncoding ;
525
561
return clone ;
526
562
}
527
563
@@ -558,6 +594,7 @@ public override bool Equals(object obj)
558
594
_maxConnectionLifeTime == rhs . _maxConnectionLifeTime &&
559
595
_maxConnectionPoolSize == rhs . _maxConnectionPoolSize &&
560
596
_minConnectionPoolSize == rhs . _minConnectionPoolSize &&
597
+ object . Equals ( _readEncoding , rhs . _readEncoding ) &&
561
598
_readPreference == rhs . _readPreference &&
562
599
_replicaSetName == rhs . _replicaSetName &&
563
600
_secondaryAcceptableLatency == rhs . _secondaryAcceptableLatency &&
@@ -568,7 +605,8 @@ public override bool Equals(object obj)
568
605
_verifySslCertificate == rhs . _verifySslCertificate &&
569
606
_waitQueueSize == rhs . _waitQueueSize &&
570
607
_waitQueueTimeout == rhs . _waitQueueTimeout &&
571
- _writeConcern == rhs . _writeConcern ;
608
+ _writeConcern == rhs . _writeConcern &&
609
+ object . Equals ( _writeEncoding , rhs . _writeEncoding ) ;
572
610
}
573
611
574
612
/// <summary>
@@ -625,6 +663,7 @@ public override int GetHashCode()
625
663
. Hash ( _maxConnectionLifeTime )
626
664
. Hash ( _maxConnectionPoolSize )
627
665
. Hash ( _minConnectionPoolSize )
666
+ . Hash ( _readEncoding )
628
667
. Hash ( _readPreference )
629
668
. Hash ( _replicaSetName )
630
669
. Hash ( _secondaryAcceptableLatency )
@@ -636,6 +675,7 @@ public override int GetHashCode()
636
675
. Hash ( _waitQueueSize )
637
676
. Hash ( _waitQueueTimeout )
638
677
. Hash ( _writeConcern )
678
+ . Hash ( _writeEncoding )
639
679
. GetHashCode ( ) ;
640
680
}
641
681
@@ -660,6 +700,10 @@ public override string ToString()
660
700
sb . AppendFormat ( "MaxConnectionLifeTime={0};" , _maxConnectionLifeTime ) ;
661
701
sb . AppendFormat ( "MaxConnectionPoolSize={0};" , _maxConnectionPoolSize ) ;
662
702
sb . AppendFormat ( "MinConnectionPoolSize={0};" , _minConnectionPoolSize ) ;
703
+ if ( _readEncoding != null )
704
+ {
705
+ sb . Append ( "ReadEncoding=[set]" ) ;
706
+ }
663
707
sb . AppendFormat ( "ReadPreference={0};" , _readPreference ) ;
664
708
sb . AppendFormat ( "ReplicaSetName={0};" , _replicaSetName ) ;
665
709
sb . AppendFormat ( "SecondaryAcceptableLatency={0};" , _secondaryAcceptableLatency ) ;
@@ -674,6 +718,10 @@ public override string ToString()
674
718
sb . AppendFormat ( "WaitQueueSize={0};" , _waitQueueSize ) ;
675
719
sb . AppendFormat ( "WaitQueueTimeout={0}" , _waitQueueTimeout ) ;
676
720
sb . AppendFormat ( "WriteConcern={0};" , _writeConcern ) ;
721
+ if ( _writeEncoding != null )
722
+ {
723
+ sb . Append ( "WriteEncoding=[set]" ) ;
724
+ }
677
725
return sb . ToString ( ) ;
678
726
}
679
727
}
0 commit comments