65 if ((cHN = rindex(cID,
' ')) && *(cHN+1)) cID = cHN+1;
66 clustID = strdup(cID);
78 if (!(cidObj = cidTab.Add(clustID, cidFree, 0,
Hash_keep)))
80 cidObj->cidName = clustID;
106 {cidMask |= nP->
Mask();
107 DEBUG(
"srv " <<nP->
Ident <<
" cluster " <<cidName <<
" anum=" <<npNum);
114 {
Say.
Emsg(
"ClustID",cidName,
"alternate table full; rejecting",nP->
Name());
121 if (npNum > 0 && ntSlot != sNum)
123 sprintf(buff,
"cluster slot mismatch: %d != %d; rejecting",sNum,ntSlot);
131 cidMask |= nP->
Mask();
133 DEBUG(
"man " <<nP->
Ident <<
" cluster " <<cidName <<
" anum=" <<npNum);
147 for (
int i = 0; i <npNum; i++)
148 {
if (nodeP[i]->isNode(lp, nid, port))
return true;}
163 if ((cHN = rindex(cID,
' ')) && *(cHN+1)) cID = cHN+1;
171 cidObj = cidTab.
Find(cID);
194 if ((cHN = rindex(cID,
' ')) && *(cHN+1)) cID = cHN+1;
202 if ((cidObj = cidTab.
Find(cID))) theMask = cidObj->cidMask;
226 {cidMask &= ~(nP->
Mask());
227 DEBUG(
"srv " <<nP->
Ident <<
" cluster " <<cidName <<
" anum=" <<npNum);
233 for (
int i = 0; i < npNum; i++)
236 if (i < npNum && npNum) nodeP[i] = nodeP[npNum];
244 if (!npNum) cidMask &= ~(nP->
Mask());
248 DEBUG(
"man " <<nP->
Ident <<
" cluster " <<cidName <<
" anum=" <<npNum
249 <<(didRM ?
"" :
" n/p"));
250 return (npNum ? nodeP[0] : 0);
unsigned long long SMask_t
static XrdCmsClustID * AddID(const char *cID)
static SMask_t Mask(const char *cID)
XrdCmsNode * RemNode(XrdCmsNode *nP)
static XrdCmsClustID * Find(const char *cID)
bool Exists(XrdLink *lp, const char *nid, int port)
bool AddNode(XrdCmsNode *nP, bool isMan)
int Emsg(const char *esfx, int ecode, const char *text1, const char *text2=0)