41 prevtablesize = psize;
42 nashtablesize = csize;
43 Threshold = (csize * LoadMax) / 100;
47 memset((
void *)nashtable, 0, (
size_t)(csize*
sizeof(
XrdCmsKeyItem *)));
65 if (++nashnum > Threshold) Expand();
74 kent = Key.
Hash % nashtablesize;
75 hip->
Next = nashtable[kent];
76 nashtable[kent] = hip;
84 void XrdCmsNash::Expand()
86 int newsize, newent, i;
92 newsize = prevtablesize + nashtablesize;
98 memset((
void *)newtab, 0, memlen);
102 for (i = 0; i < nashtablesize; i++)
105 {nextnip = nip->
Next;
106 newent = nip->
Key.
Hash % newsize;
107 nip->
Next = newtab[newent];
108 newtab[newent] = nip;
115 free((
void *)nashtable);
117 prevtablesize = nashtablesize;
118 nashtablesize = newsize;
122 Threshold =
static_cast<int>((
static_cast<long long>(newsize)*LoadMax)/100);
140 kent = Key.
Hash%nashtablesize;
144 nip = nashtable[kent];
145 while(nip && nip->
Key != Key) nip = nip->
Next;
163 kent = rip->
Loc.HashSave%nashtablesize;
167 nip = nashtable[kent];
168 while(nip && nip != rip) {pip = nip; nip = nip->
Next;}
174 else nashtable[kent] = nip->
Next;
static XrdCmsKeyItem * Alloc(unsigned int theTock)
XrdCmsKeyItem * Add(XrdCmsKey &Key)
XrdCmsKeyItem * Find(XrdCmsKey &Key)
XrdCmsNash(int psize=17711, int size=28657)
int Recycle(XrdCmsKeyItem *rip)