@@ -11,7 +11,7 @@ namespace Enyim.Caching.Memcached
1111 /// </summary>
1212 public sealed class DefaultNodeLocator : IMemcachedNodeLocator , IDisposable
1313 {
14- private const int ServerAddressMutations = 100 ;
14+ private readonly int serverAddressMutations ;
1515
1616 // holds all server keys for mapping an item key to the server consistently
1717 private uint [ ] keys ;
@@ -21,31 +21,36 @@ public sealed class DefaultNodeLocator : IMemcachedNodeLocator, IDisposable
2121 private List < IMemcachedNode > allServers ;
2222 private ReaderWriterLockSlim serverAccessLock ;
2323
24- public DefaultNodeLocator ( )
24+ public DefaultNodeLocator ( ) : this ( 100 )
25+ {
26+ }
27+
28+ public DefaultNodeLocator ( int serverAddressMutations )
2529 {
2630 this . servers = new Dictionary < uint , IMemcachedNode > ( new UIntEqualityComparer ( ) ) ;
2731 this . deadServers = new Dictionary < IMemcachedNode , bool > ( ) ;
2832 this . allServers = new List < IMemcachedNode > ( ) ;
2933 this . serverAccessLock = new ReaderWriterLockSlim ( ) ;
34+ this . serverAddressMutations = serverAddressMutations ;
3035 }
3136
3237 private void BuildIndex ( List < IMemcachedNode > nodes )
3338 {
34- var keys = new uint [ nodes . Count * DefaultNodeLocator . ServerAddressMutations ] ;
39+ var keys = new uint [ nodes . Count * this . serverAddressMutations ] ;
3540
3641 int nodeIdx = 0 ;
3742
3843 foreach ( IMemcachedNode node in nodes )
3944 {
40- var tmpKeys = DefaultNodeLocator . GenerateKeys ( node , DefaultNodeLocator . ServerAddressMutations ) ;
45+ var tmpKeys = DefaultNodeLocator . GenerateKeys ( node , this . serverAddressMutations ) ;
4146
4247 for ( var i = 0 ; i < tmpKeys . Length ; i ++ )
4348 {
4449 this . servers [ tmpKeys [ i ] ] = node ;
4550 }
4651
4752 tmpKeys . CopyTo ( keys , nodeIdx ) ;
48- nodeIdx += DefaultNodeLocator . ServerAddressMutations ;
53+ nodeIdx += this . serverAddressMutations ;
4954 }
5055
5156 Array . Sort < uint > ( keys ) ;
0 commit comments