#include <XrdCmsCluster.hh>

Public Types | |
| enum | CmsLSOpts { LS_Best = 0x0001, LS_All = 0x0002, LS_IPO = 0x0004, LS_IPV6 = 0x0008 } |
Public Member Functions | |
| XrdCmsNode * | Add (XrdLink *lp, int dport, int Status, int sport, const char *theNID) |
| SMask_t | Broadcast (SMask_t, const struct iovec *, int, int tot=0) |
| SMask_t | Broadcast (SMask_t smask, XrdCms::CmsRRHdr &Hdr, char *Data, int Dlen=0) |
| SMask_t | Broadcast (SMask_t smask, XrdCms::CmsRRHdr &Hdr, void *Data, int Dlen) |
| SMask_t | getMask (unsigned int IPv4adr) |
| SMask_t | getMask (const char *Cid) |
| XrdCmsSelected * | List (SMask_t mask, CmsLSOpts opts) |
| int | Locate (XrdCmsSelect &Sel) |
| void * | MonPerf () |
| void * | MonRefs () |
| void | Remove (const char *reason, XrdCmsNode *theNode, int immed=0) |
| void | ResetRef (SMask_t smask) |
| int | Select (XrdCmsSelect &Sel) |
| int | Select (int isrw, SMask_t pmask, int &port, char *hbuff, int &hlen) |
| void | Space (XrdCms::SpaceData &sData, SMask_t smask) |
| int | Stats (char *bfr, int bln) |
| XrdCmsCluster () | |
| ~XrdCmsCluster () | |
Public Attributes | |
| int | NodeCnt |
Private Types | |
| enum | { eExists, eDups, eROfs } |
Private Member Functions | |
| int | Assign (const char *Cid) |
| XrdCmsNode * | calcDelay (int nump, int numd, int numf, int numo, int nums, int &delay, const char **reason) |
| int | Drop (int sent, int sinst, XrdCmsDrop *djp=0) |
| void | Record (char *path, const char *reason) |
| int | Multiple (SMask_t mVec) |
| int | SelFail (XrdCmsSelect &Sel, int rc) |
| int | SelNode (XrdCmsSelect &Sel, SMask_t pmask, SMask_t amask) |
| XrdCmsNode * | SelbyCost (SMask_t, int &, int &, const char **, int) |
| XrdCmsNode * | SelbyLoad (SMask_t, int &, int &, const char **, int) |
| XrdCmsNode * | SelbyRef (SMask_t, int &, int &, const char **, int) |
| void | sendAList (XrdLink *lp) |
| void | setAltMan (int snum, unsigned int ipaddr, int port) |
Private Attributes | |
| XrdSysMutex | cidMutex |
| XrdOucTList * | cidFirst |
| XrdSysMutex | XXMutex |
| XrdSysMutex | STMutex |
| XrdCmsNode * | NodeTab [STMax] |
| int | STHi |
| int | SelAcnt |
| int | SelRcnt |
| int | doReset |
| char | AltMans [STMax *AltSize] |
| char * | AltMend |
| int | AltMent |
| SMask_t | resetMask |
| SMask_t | peerHost |
| SMask_t | peerMask |
Static Private Attributes | |
| static const int | AltSize = 24 |
Friends | |
| class | XrdCmsDrop |
| XrdCmsCluster::XrdCmsCluster | ( | ) |
| XrdCmsCluster::~XrdCmsCluster | ( | ) | [inline] |
| XrdCmsNode * XrdCmsCluster::Add | ( | XrdLink * | lp, | |
| int | dport, | |||
| int | Status, | |||
| int | sport, | |||
| const char * | theNID | |||
| ) |
References XrdCmsConfig::asManager(), Assign(), XrdCms::CMS_isMan, XrdCms::CMS_isPeer, XrdCms::CMS_noStage, XrdCms::CMS_Perm, XrdCms::CMS_Suspend, XrdCms::CmsState, XrdCms::Config, XrdCmsState::Counts, DEBUG, EPNAME, XrdLink::ID, XrdCmsNode::Ident, XrdCmsNode::Instance, XrdNetDNS::IPAddr(), XrdCmsNode::isBound, XrdCmsNode::isConn, XrdCmsNode::isDisable, XrdCmsNode::isMan, XrdCmsNode::isNoStage, XrdCmsNode::isOffline, XrdCmsNode::isPeer, XrdCmsNode::isPerm, XrdCmsNode::isSuspend, XrdCmsNode::Link, XrdCmsNode::Lock(), XrdCmsNode::myCID, XrdCmsNode::myCNUM, XrdCmsNode::myNID, XrdLink::Name(), NodeCnt, XrdCmsNode::NodeMask, NodeTab, peerHost, peerMask, Remove(), Say, sendAList(), XrdCmsState::Set(), setAltMan(), XrdCmsNode::setName(), STHi, STMutex, XrdCmsConfig::SUPCount, XrdCmsConfig::SUPLevel, and XrdCmsState::Update().
Referenced by XrdCmsProtocol::Admit().
| int XrdCmsCluster::Assign | ( | const char * | Cid | ) | [private] |
References cidFirst, cidMutex, XrdSysMutex::Lock(), XrdOucTList::next, XrdOucTList::text, XrdSysMutex::UnLock(), and XrdOucTList::val.
Referenced by Add().
| SMask_t XrdCmsCluster::Broadcast | ( | SMask_t | smask, | |
| const struct iovec * | iod, | |||
| int | iovcnt, | |||
| int | tot = 0 | |||
| ) |
References DEBUG, EPNAME, XrdCmsNode::Ident, XrdCmsNode::isNode(), XrdCmsNode::Lock(), XrdSysMutex::Lock(), XrdCmsNode::Mask(), NodeTab, peerMask, XrdCmsNode::Send(), STHi, STMutex, XrdCmsNode::UnLock(), and XrdSysMutex::UnLock().
Referenced by Broadcast(), XrdCmsNode::do_StateFWD(), Locate(), MonPerf(), XrdCmsProtocol::Reissue(), and Select().
| SMask_t XrdCmsCluster::Broadcast | ( | SMask_t | smask, | |
| XrdCms::CmsRRHdr & | Hdr, | |||
| void * | Data, | |||
| int | Dlen | |||
| ) |
References Broadcast(), and XrdCms::CmsRRHdr::datalen.
| SMask_t XrdCmsCluster::Broadcast | ( | SMask_t | smask, | |
| XrdCms::CmsRRHdr & | Hdr, | |||
| char * | Data, | |||
| int | Dlen = 0 | |||
| ) |
References Broadcast(), XrdCms::CmsRRHdr::datalen, iovec::iov_base, iovec::iov_len, and XrdOucPup::Pack().
| XrdCmsNode * XrdCmsCluster::calcDelay | ( | int | nump, | |
| int | numd, | |||
| int | numf, | |||
| int | numo, | |||
| int | nums, | |||
| int & | delay, | |||
| const char ** | reason | |||
| ) | [private] |
References XrdCms::Config, XrdCmsConfig::DiskWT, XrdCmsConfig::MaxDelay, XrdCmsConfig::SUPDelay, and XrdCmsConfig::SUSDelay.
Referenced by SelbyCost(), SelbyLoad(), and SelbyRef().
| int XrdCmsCluster::Drop | ( | int | sent, | |
| int | sinst, | |||
| XrdCmsDrop * | djp = 0 | |||
| ) | [private] |
References AltMans, AltMend, AltMent, AltSize, XrdCms::Cache, DEBUG, XrdCmsCache::Drop(), XrdCmsNode::DropJob, XrdCmsNode::DropTime, EPNAME, XrdCmsNode::Ident, XrdCmsNode::Inst(), XrdCmsNode::isBound, XrdCmsNode::isMan, XrdCmsNode::isOffline, XrdCmsNode::isPeer, XrdCmsNode::NodeMask, NodeTab, peerHost, peerMask, Say, XrdCms::Sched, XrdScheduler::Schedule(), STHi, and strlcpy().
Referenced by XrdCmsDrop::DoIt(), and Remove().
| SMask_t XrdCmsCluster::getMask | ( | unsigned int | IPv4adr | ) |
References XrdCmsNode::isNode(), XrdSysMutex::Lock(), XrdCmsNode::NodeMask, NodeTab, STHi, STMutex, and XrdSysMutex::UnLock().
Referenced by XrdCmsNode::do_Select().
| SMask_t XrdCmsCluster::getMask | ( | const char * | Cid | ) |
| XrdCmsSelected * XrdCmsCluster::List | ( | SMask_t | mask, | |
| CmsLSOpts | opts | |||
| ) |
References XrdCms::Config, XrdCmsNode::DiskUtil, XrdCmsNode::IPAddr, XrdCmsNode::IPV6, XrdCmsNode::IPV6Len, XrdCmsNode::isDisable, XrdCmsNode::isMan, XrdCmsNode::isNoStage, XrdCmsNode::isOffline, XrdCmsNode::isPeer, XrdCmsNode::isProxy, XrdCmsNode::isRW, XrdCmsNode::isSuspend, XrdSysMutex::Lock(), LS_Best, LS_IPO, LS_IPV6, XrdCmsNode::myLoad, XrdCmsNode::Name(), XrdCmsNode::NodeID, XrdCmsNode::NodeMask, NodeTab, XrdCmsNode::Port, XrdCmsNode::RefA, XrdCmsNode::RefR, XrdCmsNode::RefTotA, XrdCmsNode::RefTotR, XrdCmsConfig::sched_RR, SelbyLoad(), SelbyRef(), STHi, STMutex, XrdSysMutex::UnLock(), and XrdCmsNode::UnLock().
Referenced by XrdCmsNode::do_Locate(), XrdCmsRRQ::sendLocResp(), and Stats().
| int XrdCmsCluster::Locate | ( | XrdCmsSelect & | Sel | ) |
References XrdCmsCache::AddFile(), XrdCmsSelect::bf, Broadcast(), XrdCms::Cache, XrdCms::Cluster, EPNAME, XrdCmsPList_Anchor::Find(), XrdCmsCache::GetFile(), XrdCmsKey::Hash, XrdCms::CmsStateRequest::Hdr, XrdCmsSelect::hf, XrdCmsSelect::InfoP, XrdCmsRRQInfo::isLU, XrdCmsKey::Len, XrdCms::CmsRRHdr::modifier, XrdCmsSelect::Opts, XrdCmsSelect::Path, Path, XrdCmsCache::Paths, XrdCmsSelect::pf, XrdCmsSelect::Refresh, XrdCmsPInfo::rovec, XrdCmsRRQInfo::rwVec, XrdCmsPInfo::rwvec, TRACE, XrdCmsCache::UnkFile(), XrdCmsKey::Val, XrdCmsSelect::Vec, XrdCmsSelect::wf, and XrdCmsCache::WT4File().
Referenced by XrdCmsNode::do_Locate().
| void * XrdCmsCluster::MonPerf | ( | ) |
References XrdCmsConfig::AskPerf, XrdCmsConfig::AskPing, Broadcast(), XrdCms::Config, XrdSysTimer::Snooze(), and Usage().
Referenced by XrdCmsStartMonPerf().
| void * XrdCmsCluster::MonRefs | ( | ) |
References XrdCms::Config, doReset, XrdCmsNode::isNode(), XrdCmsNode::Lock(), XrdSysMutex::Lock(), NodeTab, XrdCmsNode::RefA, XrdCmsNode::RefR, XrdCmsConfig::RefReset, XrdCmsNode::RefTotA, XrdCmsNode::RefTotR, XrdCmsConfig::RefTurn, resetMask, SelAcnt, SelRcnt, XrdSysTimer::Snooze(), STHi, STMutex, XrdSysMutex::UnLock(), and XrdCmsNode::UnLock().
Referenced by XrdCmsStartMonRefs().
| void XrdCmsCluster::Record | ( | char * | path, | |
| const char * | reason | |||
| ) | [private] |
References DEBUG, EPNAME, XrdSysMutex::Lock(), Say, and XrdSysMutex::UnLock().
Referenced by SelNode().
| void XrdCmsCluster::Remove | ( | const char * | reason, | |
| XrdCmsNode * | theNode, | |||
| int | immed = 0 | |||
| ) |
References XrdCmsConfig::asManager(), XrdCms::CmsState, XrdCms::Config, XrdCmsState::Counts, DEBUG, XrdCmsNode::Disc(), Drop(), XrdCmsNode::DropJob, XrdCmsNode::DropTime, XrdCmsConfig::DRPDelay, EPNAME, XrdCmsNode::ID(), XrdCmsNode::Ident, XrdCmsNode::isBound, XrdCmsNode::isConn, XrdCmsNode::isGone, XrdCmsNode::isNoStage, XrdCmsNode::isOffline, XrdCmsNode::isSuspend, NodeCnt, XrdCmsDrop::nodeInst, Say, STMutex, XrdCmsState::Update(), and XrdCmsDrop.
Referenced by Add(), and XrdCmsProtocol::Process().
| void XrdCmsCluster::ResetRef | ( | SMask_t | smask | ) |
References doReset, XrdSysMutex::Lock(), resetMask, STMutex, and XrdSysMutex::UnLock().
Referenced by XrdCmsProtocol::Admit().
| XrdCmsNode * XrdCmsCluster::SelbyCost | ( | SMask_t | mask, | |
| int & | nump, | |||
| int & | delay, | |||
| const char ** | reason, | |||
| int | needspace | |||
| ) | [private] |
References calcDelay(), XrdCms::Config, XrdCmsConfig::DiskLinger, XrdCmsNode::isDisable, XrdCmsNode::isNoStage, XrdCmsNode::isOffline, XrdCmsNode::isSuspend, XrdCmsNode::Lock(), XrdCmsNode::myCost, XrdCmsNode::NodeMask, NodeTab, XrdCmsConfig::P_fuzz, XrdCmsNode::RefA, XrdCmsNode::RefR, SelAcnt, SelRcnt, and STHi.
Referenced by SelNode().
| XrdCmsNode * XrdCmsCluster::SelbyLoad | ( | SMask_t | mask, | |
| int & | nump, | |||
| int & | delay, | |||
| const char ** | reason, | |||
| int | needspace | |||
| ) | [private] |
References XrdCmsNode::allowsSS, calcDelay(), XrdCms::Config, XrdCmsNode::DiskFree, XrdCmsConfig::DiskLinger, XrdCmsNode::DiskMinF, XrdCmsNode::isDisable, XrdCmsNode::isNoStage, XrdCmsNode::isOffline, XrdCmsNode::isSuspend, XrdCmsNode::Lock(), XrdCmsConfig::MaxLoad, XrdCmsNode::myLoad, XrdCmsNode::myMass, XrdCmsNode::NodeMask, NodeTab, XrdCmsConfig::P_fuzz, XrdCmsNode::RefA, XrdCmsNode::RefR, SelAcnt, SelRcnt, and STHi.
| XrdCmsNode * XrdCmsCluster::SelbyRef | ( | SMask_t | mask, | |
| int & | nump, | |||
| int & | delay, | |||
| const char ** | reason, | |||
| int | needspace | |||
| ) | [private] |
References XrdCmsNode::allowsSS, calcDelay(), XrdCms::Config, XrdCmsNode::DiskFree, XrdCmsConfig::DiskLinger, XrdCmsNode::DiskMinF, XrdCmsNode::isDisable, XrdCmsNode::isNoStage, XrdCmsNode::isOffline, XrdCmsNode::isSuspend, XrdCmsNode::Lock(), XrdCmsNode::NodeMask, NodeTab, XrdCmsNode::RefA, XrdCmsNode::RefR, SelAcnt, SelRcnt, and STHi.
| int XrdCmsCluster::Select | ( | XrdCmsSelect & | Sel | ) |
References XrdCmsCache::AddFile(), XrdCmsSelect::bf, Broadcast(), XrdCms::Cache, XrdCms::Cluster, XrdCms::Config, XrdCmsSelect::Create, XrdCmsSelect::Data, XrdCmsSelect::DLen, eDups, eExists, EPNAME, eROfs, XrdCmsPList_Anchor::Find(), XrdCmsSelect::Freshen, XrdCmsCache::GetFile(), XrdCmsKey::Hash, XrdCms::CmsStateRequest::Hdr, XrdCmsSelect::hf, XrdCmsSelect::isMeta, XrdCms::kYR_raw, XrdCmsKey::Len, XrdCmsConfig::LUPDelay, XrdCms::CmsRRHdr::modifier, Multiple(), XrdCmsSelect::NewFile, XrdCmsSelect::nmask, XrdCmsSelect::Online, XrdCmsSelect::Opts, XrdCmsSelect::Path, XrdCmsCache::Paths, XrdCmsSelect::pf, XrdCmsSelect::Refresh, XrdCmsSelect::Resp, XrdCmsPInfo::rovec, XrdCmsConfig::RWDelay, XrdCmsPInfo::rwvec, SelFail(), SelNode(), snprintf, XrdCmsPInfo::ssvec, TRACE, XrdCmsSelect::Trunc, XrdCmsCache::UnkFile(), XrdCmsKey::Val, XrdCmsSelect::Vec, XrdCmsSelect::Write, and XrdCmsCache::WT4File().
Referenced by XrdCmsNode::do_Mv(), XrdCmsNode::do_Select(), XrdCmsNode::do_SelPrep(), and XrdCmsRRQ::Respond().
| int XrdCmsCluster::Select | ( | int | isrw, | |
| SMask_t | pmask, | |||
| int & | port, | |||
| char * | hbuff, | |||
| int & | hlen | |||
| ) |
References XrdCms::Config, XrdCmsNode::DiskFree, XrdCmsNode::DiskMinF, XrdCmsNode::isDisable, XrdCmsNode::isNoStage, XrdCmsNode::isOffline, XrdCmsNode::isSuspend, XrdCmsNode::Lock(), XrdSysMutex::Lock(), XrdCmsConfig::MaxLoad, XrdCmsNode::myLoad, XrdCmsNode::Name(), NodeTab, XrdCmsNode::RefR, XrdCmsConfig::sched_RR, SelAcnt, SelRcnt, STMutex, XrdCmsNode::UnLock(), and XrdSysMutex::UnLock().
| int XrdCmsCluster::SelFail | ( | XrdCmsSelect & | Sel, | |
| int | rc | |||
| ) | [private] |
References XrdCmsSelect::Data, XrdCmsSelect::DLen, eExists, XrdCmsSelect::Resp, and strlcpy().
Referenced by Select().
| int XrdCmsCluster::SelNode | ( | XrdCmsSelect & | Sel, | |
| SMask_t | pmask, | |||
| SMask_t | amask | |||
| ) | [private] |
References XrdCmsCache::AddFile(), XrdCmsNode::allowsRW, XrdCmsNode::allowsSS, XrdCms::Cache, XrdCms::Config, XrdCmsSelect::Create, XrdCmsSelect::Data, XrdCmsSelect::DLen, EPNAME, XrdCmsSelect::iovN, XrdCmsSelect::iovP, XrdCmsSelect::isMeta, XrdSysMutex::Lock(), XrdCmsNode::Name(), XrdCmsSelect::noBind, NodeCnt, XrdCmsNode::NodeMask, XrdCmsSelect::Opts, XrdCmsSelect::Path, peerHost, peerMask, XrdCmsSelect::Peers, XrdCmsSelect::Pending, XrdCmsSelect::Port, XrdCmsConfig::PSDelay, Record(), XrdCmsSelect::Resp, XrdCmsConfig::sched_RR, SelbyCost(), SelbyLoad(), SelbyRef(), XrdCmsNode::Send(), XrdCmsSelect::smask, STMutex, XrdCmsConfig::SUPCount, XrdCmsConfig::SUPDelay, TRACE, XrdCmsNode::UnLock(), XrdSysMutex::UnLock(), XrdCmsKey::Val, and XrdCmsSelect::Write.
Referenced by Select().
| void XrdCmsCluster::sendAList | ( | XrdLink * | lp | ) | [private] |
References AltMans, AltMend, AltSize, XrdCms::CmsRRHdr::datalen, XrdCms::CmsTryRequest::Hdr, iovec::iov_base, iovec::iov_len, XrdLink::Send(), and XrdCms::CmsTryRequest::sLen.
Referenced by Add().
| void XrdCmsCluster::setAltMan | ( | int | snum, | |
| unsigned int | ipaddr, | |||
| int | port | |||
| ) | [private] |
References AltMans, AltMend, AltMent, AltSize, XrdCms::Config, XrdNetDNS::IP2String(), and XrdCmsConfig::PortTCP.
Referenced by Add().
| void XrdCmsCluster::Space | ( | XrdCms::SpaceData & | sData, | |
| SMask_t | smask | |||
| ) |
References XrdCmsNode::allowsRW, XrdCmsNode::DiskFree, XrdCmsNode::DiskMinF, XrdCmsNode::DiskTotal, XrdCmsNode::DiskUtil, XrdCmsNode::isNode(), XrdCmsNode::isOffline, XrdCmsNode::isRW, XrdSysMutex::Lock(), NodeTab, peerMask, XrdCms::SpaceData::sFree, XrdCms::SpaceData::sNum, STHi, STMutex, XrdCms::SpaceData::sUtil, XrdCms::SpaceData::Total, XrdSysMutex::UnLock(), XrdCms::SpaceData::wFree, XrdCms::SpaceData::wMinF, XrdCms::SpaceData::wNum, and XrdCms::SpaceData::wUtil.
Referenced by XrdCmsNode::do_StatFS(), and XrdCmsMeter::UpdtSpace().
| int XrdCmsCluster::Stats | ( | char * | bfr, | |
| int | bln | |||
| ) |
References XrdCms::Config, XrdCmsSelected::Disable, XrdCmsSelected::Free, FULLMASK, List(), XrdCmsSelected::Load, LS_All, XrdCmsConfig::myName, XrdCmsSelected::Name, XrdCmsSelected::next, XrdCmsSelected::NoStage, XrdCmsSelected::Offline, XrdCmsSelected::RefTotA, XrdCmsSelected::RefTotR, snprintf, stat(), XrdCmsSelected::Status, STMax, and XrdCmsSelected::Suspend.
Referenced by XrdCmsNode::do_Stats().
friend class XrdCmsDrop [friend] |
Referenced by Remove().
char XrdCmsCluster::AltMans[STMax *AltSize] [private] |
Referenced by Drop(), sendAList(), setAltMan(), and XrdCmsCluster().
char* XrdCmsCluster::AltMend [private] |
Referenced by Drop(), sendAList(), setAltMan(), and XrdCmsCluster().
int XrdCmsCluster::AltMent [private] |
Referenced by Drop(), setAltMan(), and XrdCmsCluster().
const int XrdCmsCluster::AltSize = 24 [static, private] |
Referenced by Drop(), sendAList(), and setAltMan().
XrdOucTList* XrdCmsCluster::cidFirst [private] |
Referenced by Assign(), getMask(), and XrdCmsCluster().
XrdSysMutex XrdCmsCluster::cidMutex [private] |
int XrdCmsCluster::doReset [private] |
Referenced by MonRefs(), ResetRef(), and XrdCmsCluster().
Referenced by Add(), XrdCmsProtocol::Execute(), Remove(), SelNode(), and XrdCmsCluster().
XrdCmsNode* XrdCmsCluster::NodeTab[STMax] [private] |
Referenced by Add(), Broadcast(), Drop(), getMask(), List(), MonRefs(), SelbyCost(), SelbyLoad(), SelbyRef(), Select(), Space(), and XrdCmsCluster().
SMask_t XrdCmsCluster::peerHost [private] |
Referenced by Add(), Drop(), SelNode(), and XrdCmsCluster().
SMask_t XrdCmsCluster::peerMask [private] |
Referenced by Add(), Broadcast(), Drop(), SelNode(), Space(), and XrdCmsCluster().
SMask_t XrdCmsCluster::resetMask [private] |
Referenced by MonRefs(), ResetRef(), and XrdCmsCluster().
int XrdCmsCluster::SelAcnt [private] |
Referenced by MonRefs(), SelbyCost(), SelbyLoad(), SelbyRef(), Select(), and XrdCmsCluster().
int XrdCmsCluster::SelRcnt [private] |
Referenced by MonRefs(), SelbyCost(), SelbyLoad(), SelbyRef(), Select(), and XrdCmsCluster().
int XrdCmsCluster::STHi [private] |
Referenced by Add(), Broadcast(), Drop(), getMask(), List(), MonRefs(), SelbyCost(), SelbyLoad(), SelbyRef(), Space(), and XrdCmsCluster().
XrdSysMutex XrdCmsCluster::STMutex [private] |
Referenced by Add(), Broadcast(), XrdCmsDrop::DoIt(), getMask(), List(), MonRefs(), Remove(), ResetRef(), Select(), SelNode(), and Space().
XrdSysMutex XrdCmsCluster::XXMutex [private] |
1.7.1