@@ -11,7 +11,7 @@ namespace Enyim.Caching.Memcached
11
11
/// </summary>
12
12
public sealed class DefaultNodeLocator : IMemcachedNodeLocator , IDisposable
13
13
{
14
- private const int ServerAddressMutations = 100 ;
14
+ private readonly int serverAddressMutations ;
15
15
16
16
// holds all server keys for mapping an item key to the server consistently
17
17
private uint [ ] keys ;
@@ -21,31 +21,36 @@ public sealed class DefaultNodeLocator : IMemcachedNodeLocator, IDisposable
21
21
private List < IMemcachedNode > allServers ;
22
22
private ReaderWriterLockSlim serverAccessLock ;
23
23
24
- public DefaultNodeLocator ( )
24
+ public DefaultNodeLocator ( ) : this ( 100 )
25
+ {
26
+ }
27
+
28
+ public DefaultNodeLocator ( int serverAddressMutations )
25
29
{
26
30
this . servers = new Dictionary < uint , IMemcachedNode > ( new UIntEqualityComparer ( ) ) ;
27
31
this . deadServers = new Dictionary < IMemcachedNode , bool > ( ) ;
28
32
this . allServers = new List < IMemcachedNode > ( ) ;
29
33
this . serverAccessLock = new ReaderWriterLockSlim ( ) ;
34
+ this . serverAddressMutations = serverAddressMutations ;
30
35
}
31
36
32
37
private void BuildIndex ( List < IMemcachedNode > nodes )
33
38
{
34
- var keys = new uint [ nodes . Count * DefaultNodeLocator . ServerAddressMutations ] ;
39
+ var keys = new uint [ nodes . Count * this . serverAddressMutations ] ;
35
40
36
41
int nodeIdx = 0 ;
37
42
38
43
foreach ( IMemcachedNode node in nodes )
39
44
{
40
- var tmpKeys = DefaultNodeLocator . GenerateKeys ( node , DefaultNodeLocator . ServerAddressMutations ) ;
45
+ var tmpKeys = DefaultNodeLocator . GenerateKeys ( node , this . serverAddressMutations ) ;
41
46
42
47
for ( var i = 0 ; i < tmpKeys . Length ; i ++ )
43
48
{
44
49
this . servers [ tmpKeys [ i ] ] = node ;
45
50
}
46
51
47
52
tmpKeys . CopyTo ( keys , nodeIdx ) ;
48
- nodeIdx += DefaultNodeLocator . ServerAddressMutations ;
53
+ nodeIdx += this . serverAddressMutations ;
49
54
}
50
55
51
56
Array . Sort < uint > ( keys ) ;
0 commit comments