@@ -38,6 +38,7 @@ public class MongoClientSettings : IEquatable<MongoClientSettings>
3838 private TimeSpan _maxConnectionLifeTime ;
3939 private int _maxConnectionPoolSize ;
4040 private int _minConnectionPoolSize ;
41+ private UTF8Encoding _readEncoding ;
4142 private ReadPreference _readPreference ;
4243 private string _replicaSetName ;
4344 private TimeSpan _secondaryAcceptableLatency ;
@@ -49,6 +50,7 @@ public class MongoClientSettings : IEquatable<MongoClientSettings>
4950 private int _waitQueueSize ;
5051 private TimeSpan _waitQueueTimeout ;
5152 private WriteConcern _writeConcern ;
53+ private UTF8Encoding _writeEncoding ;
5254
5355 // the following fields are set when Freeze is called
5456 private bool _isFrozen ;
@@ -70,6 +72,7 @@ public MongoClientSettings()
7072 _maxConnectionLifeTime = MongoDefaults . MaxConnectionLifeTime ;
7173 _maxConnectionPoolSize = MongoDefaults . MaxConnectionPoolSize ;
7274 _minConnectionPoolSize = MongoDefaults . MinConnectionPoolSize ;
75+ _readEncoding = null ;
7376 _readPreference = ReadPreference . Primary ;
7477 _replicaSetName = null ;
7578 _secondaryAcceptableLatency = MongoDefaults . SecondaryAcceptableLatency ;
@@ -81,6 +84,7 @@ public MongoClientSettings()
8184 _waitQueueSize = MongoDefaults . ComputedWaitQueueSize ;
8285 _waitQueueTimeout = MongoDefaults . WaitQueueTimeout ;
8386 _writeConcern = WriteConcern . Acknowledged ;
87+ _writeEncoding = null ;
8488 }
8589
8690 // public properties
@@ -213,6 +217,19 @@ public int MinConnectionPoolSize
213217 }
214218 }
215219
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+
216233 /// <summary>
217234 /// Gets or sets the read preferences.
218235 /// </summary>
@@ -386,6 +403,19 @@ public WriteConcern WriteConcern
386403 }
387404 }
388405
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+
389419 // public operators
390420 /// <summary>
391421 /// Determines whether two <see cref="MongoClientSettings"/> instances are equal.
@@ -440,6 +470,7 @@ public static MongoClientSettings FromConnectionStringBuilder(MongoConnectionStr
440470 clientSettings . MaxConnectionLifeTime = builder . MaxConnectionLifeTime ;
441471 clientSettings . MaxConnectionPoolSize = builder . MaxConnectionPoolSize ;
442472 clientSettings . MinConnectionPoolSize = builder . MinConnectionPoolSize ;
473+ clientSettings . ReadEncoding = null ; // ReadEncoding must be provided in code
443474 clientSettings . ReadPreference = ( builder . ReadPreference == null ) ? ReadPreference . Primary : builder . ReadPreference . Clone ( ) ;
444475 clientSettings . ReplicaSetName = builder . ReplicaSetName ;
445476 clientSettings . SecondaryAcceptableLatency = builder . SecondaryAcceptableLatency ;
@@ -451,6 +482,7 @@ public static MongoClientSettings FromConnectionStringBuilder(MongoConnectionStr
451482 clientSettings . WaitQueueSize = builder . ComputedWaitQueueSize ;
452483 clientSettings . WaitQueueTimeout = builder . WaitQueueTimeout ;
453484 clientSettings . WriteConcern = builder . GetWriteConcern ( true ) ; // WriteConcern is enabled by default for MongoClient
485+ clientSettings . WriteEncoding = null ; // WriteEncoding must be provided in code
454486 return clientSettings ;
455487 }
456488
@@ -480,6 +512,7 @@ public static MongoClientSettings FromUrl(MongoUrl url)
480512 clientSettings . MaxConnectionLifeTime = url . MaxConnectionLifeTime ;
481513 clientSettings . MaxConnectionPoolSize = url . MaxConnectionPoolSize ;
482514 clientSettings . MinConnectionPoolSize = url . MinConnectionPoolSize ;
515+ clientSettings . ReadEncoding = null ; // ReadEncoding must be provided in code
483516 clientSettings . ReadPreference = ( url . ReadPreference == null ) ? ReadPreference . Primary : url . ReadPreference ;
484517 clientSettings . ReplicaSetName = url . ReplicaSetName ;
485518 clientSettings . SecondaryAcceptableLatency = url . SecondaryAcceptableLatency ;
@@ -491,6 +524,7 @@ public static MongoClientSettings FromUrl(MongoUrl url)
491524 clientSettings . WaitQueueSize = url . ComputedWaitQueueSize ;
492525 clientSettings . WaitQueueTimeout = url . WaitQueueTimeout ;
493526 clientSettings . WriteConcern = url . GetWriteConcern ( true ) ; // WriteConcern is enabled by default for MongoClient
527+ clientSettings . WriteEncoding = null ; // WriteEncoding must be provided in code
494528 return clientSettings ;
495529 }
496530
@@ -511,6 +545,7 @@ public MongoClientSettings Clone()
511545 clone . _maxConnectionLifeTime = _maxConnectionLifeTime ;
512546 clone . _maxConnectionPoolSize = _maxConnectionPoolSize ;
513547 clone . _minConnectionPoolSize = _minConnectionPoolSize ;
548+ clone . _readEncoding = _readEncoding ;
514549 clone . _readPreference = _readPreference . Clone ( ) ;
515550 clone . _replicaSetName = _replicaSetName ;
516551 clone . _secondaryAcceptableLatency = _secondaryAcceptableLatency ;
@@ -522,6 +557,7 @@ public MongoClientSettings Clone()
522557 clone . _waitQueueSize = _waitQueueSize ;
523558 clone . _waitQueueTimeout = _waitQueueTimeout ;
524559 clone . _writeConcern = _writeConcern . Clone ( ) ;
560+ clone . _writeEncoding = _writeEncoding ;
525561 return clone ;
526562 }
527563
@@ -558,6 +594,7 @@ public override bool Equals(object obj)
558594 _maxConnectionLifeTime == rhs . _maxConnectionLifeTime &&
559595 _maxConnectionPoolSize == rhs . _maxConnectionPoolSize &&
560596 _minConnectionPoolSize == rhs . _minConnectionPoolSize &&
597+ object . Equals ( _readEncoding , rhs . _readEncoding ) &&
561598 _readPreference == rhs . _readPreference &&
562599 _replicaSetName == rhs . _replicaSetName &&
563600 _secondaryAcceptableLatency == rhs . _secondaryAcceptableLatency &&
@@ -568,7 +605,8 @@ public override bool Equals(object obj)
568605 _verifySslCertificate == rhs . _verifySslCertificate &&
569606 _waitQueueSize == rhs . _waitQueueSize &&
570607 _waitQueueTimeout == rhs . _waitQueueTimeout &&
571- _writeConcern == rhs . _writeConcern ;
608+ _writeConcern == rhs . _writeConcern &&
609+ object . Equals ( _writeEncoding , rhs . _writeEncoding ) ;
572610 }
573611
574612 /// <summary>
@@ -625,6 +663,7 @@ public override int GetHashCode()
625663 . Hash ( _maxConnectionLifeTime )
626664 . Hash ( _maxConnectionPoolSize )
627665 . Hash ( _minConnectionPoolSize )
666+ . Hash ( _readEncoding )
628667 . Hash ( _readPreference )
629668 . Hash ( _replicaSetName )
630669 . Hash ( _secondaryAcceptableLatency )
@@ -636,6 +675,7 @@ public override int GetHashCode()
636675 . Hash ( _waitQueueSize )
637676 . Hash ( _waitQueueTimeout )
638677 . Hash ( _writeConcern )
678+ . Hash ( _writeEncoding )
639679 . GetHashCode ( ) ;
640680 }
641681
@@ -660,6 +700,10 @@ public override string ToString()
660700 sb . AppendFormat ( "MaxConnectionLifeTime={0};" , _maxConnectionLifeTime ) ;
661701 sb . AppendFormat ( "MaxConnectionPoolSize={0};" , _maxConnectionPoolSize ) ;
662702 sb . AppendFormat ( "MinConnectionPoolSize={0};" , _minConnectionPoolSize ) ;
703+ if ( _readEncoding != null )
704+ {
705+ sb . Append ( "ReadEncoding=[set]" ) ;
706+ }
663707 sb . AppendFormat ( "ReadPreference={0};" , _readPreference ) ;
664708 sb . AppendFormat ( "ReplicaSetName={0};" , _replicaSetName ) ;
665709 sb . AppendFormat ( "SecondaryAcceptableLatency={0};" , _secondaryAcceptableLatency ) ;
@@ -674,6 +718,10 @@ public override string ToString()
674718 sb . AppendFormat ( "WaitQueueSize={0};" , _waitQueueSize ) ;
675719 sb . AppendFormat ( "WaitQueueTimeout={0}" , _waitQueueTimeout ) ;
676720 sb . AppendFormat ( "WriteConcern={0};" , _writeConcern ) ;
721+ if ( _writeEncoding != null )
722+ {
723+ sb . Append ( "WriteEncoding=[set]" ) ;
724+ }
677725 return sb . ToString ( ) ;
678726 }
679727 }
0 commit comments