#include <XrdCmsProtocol.hh>


Public Member Functions | |
| void | DoIt () |
| int | Execute (XrdCmsRRData &Data) |
| XrdProtocol * | Match (XrdLink *lp) |
| int | Process (XrdLink *lp) |
| void | Recycle (XrdLink *lp, int consec, const char *reason) |
| int | Stats (char *buff, int blen, int do_sync=0) |
| XrdCmsProtocol () | |
| ~XrdCmsProtocol () | |
Static Public Member Functions | |
| static XrdCmsProtocol * | Alloc (const char *theRole="", const char *theMan=0, int thePort=0) |
Private Types | |
| enum | Bearing { isDown, isLateral, isUp } |
Private Member Functions | |
| XrdCmsRouting * | Admit () |
| XrdCmsRouting * | Admit_DataServer (int) |
| XrdCmsRouting * | Admit_Redirector (int) |
| XrdCmsRouting * | Admit_Supervisor (int) |
| SMask_t | AddPath (XrdCmsNode *nP, const char *pType, const char *Path) |
| int | Authenticate () |
| void | ConfigCheck (unsigned char *theConfig) |
| const char * | Dispatch (Bearing cDir, int maxWait, int maxTries) |
| XrdCmsRouting * | Login_Failed (const char *Reason) |
| void | Pander (const char *manager, int mport) |
| void | Reissue (XrdCmsRRData &Data) |
| void | Reply_Delay (XrdCmsRRData &Data, kXR_unt32 theDelay) |
| void | Reply_Error (XrdCmsRRData &Data, int ecode, const char *etext) |
Private Attributes | |
| XrdCmsProtocol * | ProtLink |
| XrdCmsRouting * | Routing |
| XrdLink * | Link |
| const char * | myRole |
| const char * | myMan |
| int | myManPort |
| XrdCmsNode * | myNode |
| short | RSlot |
| char | loggedIn |
Static Private Attributes | |
| static XrdSysMutex | ProtMutex |
| static XrdCmsProtocol * | ProtStack = 0 |
| static XrdCmsParser | ProtArgs |
| static const int | maxReqSize = 16384 |
| static int | readWait = 1000 |
Friends | |
| class | XrdCmsJob |
enum XrdCmsProtocol::Bearing [private] |
| XrdCmsProtocol::XrdCmsProtocol | ( | ) | [inline] |
Referenced by Alloc().
| XrdCmsProtocol::~XrdCmsProtocol | ( | ) | [inline] |
| SMask_t XrdCmsProtocol::AddPath | ( | XrdCmsNode * | nP, | |
| const char * | pType, | |||
| const char * | Path | |||
| ) | [private] |
References XrdCmsNode::allowsRW, XrdCmsNode::allowsSS, XrdCms::Cache, XrdCmsPList_Anchor::Insert(), XrdCmsNode::isRW, XrdCmsNode::Mask(), XrdCmsCache::Paths, XrdCmsPInfo::rovec, XrdCmsPInfo::rwvec, and XrdCmsPInfo::ssvec.
Referenced by Admit().
| XrdCmsRouting * XrdCmsProtocol::Admit | ( | ) | [private] |
References XrdCmsCluster::Add(), AddPath(), XrdCmsLogin::Admit(), Admit_Redirector(), XrdCmsConfig::asManager(), XrdCmsConfig::asProxy(), XrdCmsConfig::asServer(), XrdCmsConfig::asSolo(), XrdCms::Cache, XrdCms::Cluster, XrdCms::CMS_isMan, XrdCms::CMS_isPeer, XrdCms::CMS_isProxy, XrdCms::CMS_noStage, XrdCms::CMS_Suspend, XrdCms::CmsState, XrdCms::Config, ConfigCheck(), DEBUG, XrdCmsNode::DiskFree, XrdCmsNode::DiskMinF, XrdCmsNode::DiskNums, XrdCmsNode::DiskTotal, XrdCmsNode::DiskUtil, XrdCms::CmsLoginData::dPort, EPNAME, XrdCms::CmsLoginData::fsNum, XrdCms::CmsLoginData::fSpace, XrdCms::CmsLoginData::fsUtil, XrdOucTokenizer::GetLine(), XrdOucTokenizer::GetToken(), XrdCms::CmsLoginData::HoldTime, XrdCmsNode::Ident, XrdCmsPList_Anchor::Insert(), XrdCmsNode::isDisable, XrdCmsNode::isPeer, XrdCmsNode::isSuspend, Link, Login_Failed(), XrdCmsConfig::LUPHold, XrdCms::Manager, XrdCmsNode::Mask(), XrdCms::Meter, XrdCms::CmsLoginData::Mode, XrdCms::CmsLoginData::mSpace, myNode, myRole, XrdLink::Name(), XrdCmsCache::Paths, XrdCms::CmsLoginData::Paths, XrdCmsManager::Reset(), XrdCmsCluster::ResetRef(), XrdCmsPInfo::rovec, XrdCms::rspVOps, Say, XrdLink::setID(), XrdCmsMeter::setVirtUpdt(), XrdCms::CmsLoginData::SID, XrdCms::CmsLoginData::sPort, XrdCmsPInfo::ssvec, XrdCmsState::Suspended, XrdCmsNode::SyncSpace(), XrdCms::Trace, TRACE_Debug, XrdCms::CmsLoginData::tSpace, and XrdOucTrace::What.
Referenced by Process().
| XrdCmsRouting* XrdCmsProtocol::Admit_DataServer | ( | int | ) | [private] |
| XrdCmsRouting * XrdCmsProtocol::Admit_Redirector | ( | int | wasSuspended | ) | [private] |
References XrdCmsRTable::Add(), XrdCms::CmsState, DEBUG, EPNAME, XrdCmsNode::Ident, Link, XrdCmsNode::Lock(), myNode, myRole, XrdCms::rdrVOps, RSlot, XrdCms::RTable, Say, XrdCmsNode::Send(), XrdCmsNode::setSlot(), and XrdCmsState::Suspended.
Referenced by Admit().
| XrdCmsRouting* XrdCmsProtocol::Admit_Supervisor | ( | int | ) | [private] |
| XrdCmsProtocol * XrdCmsProtocol::Alloc | ( | const char * | theRole = "", |
|
| const char * | theMan = 0, |
|||
| int | thePort = 0 | |||
| ) | [static] |
References XrdSysMutex::Lock(), loggedIn, myMan, myManPort, myRole, ProtLink, ProtMutex, ProtStack, Say, XrdSysMutex::UnLock(), and XrdCmsProtocol().
Referenced by XrdCmsConfig::DoIt(), Match(), and XrdCmsSupervisor::Start().
| int XrdCmsProtocol::Authenticate | ( | ) | [private] |
| void XrdCmsProtocol::ConfigCheck | ( | unsigned char * | theConfig | ) | [private] |
References XrdCmsCache::Bounce(), XrdCms::Cache, XrdCmsNode::ConfigID, XrdOucCRC::CRC32(), XrdCmsNode::ID(), Link, XrdCmsNode::Mask(), myNode, XrdLink::Name(), XrdCmsCache::Paths, XrdCmsPList_Anchor::Remove(), and Say.
Referenced by Admit().
| const char * XrdCmsProtocol::Dispatch | ( | Bearing | cDir, | |
| int | maxWait, | |||
| int | maxTries | |||
| ) | [private] |
References XrdCmsJob::Alloc(), XrdLink::Bind(), XrdCmsRRData::Blen, XrdCmsRRData::Buff, XrdCms::CmsRRHdr::datalen, DEBUG, Debug, XrdCmsRRData::Dlen, ECONNABORTED, EPNAME, ETIMEDOUT, Execute(), XrdCmsRRData::getBuff(), XrdCmsRouter::getName(), XrdCmsRouting::getRoute(), XrdSysThread::ID(), XrdCmsRRData::Ident, XrdCmsNode::Ident, isDown, XrdCmsRouting::isSync, isUp, XrdCms::kYR_EINVAL, XrdCms::kYR_ping, XrdCms::kYR_raw, Link, maxReqSize, XrdCms::CmsRRHdr::modifier, myNode, XrdLink::Name(), XrdCmsRouting::noArgs, XrdCmsRRData::Objectify(), XrdCmsParser::Parse(), XrdCmsRRData::Path, XrdCmsRRData::PathLen, ProtArgs, QTRACE, XrdLink::RecvAll(), Reply_Error(), XrdCmsRRData::Request, XrdCms::Router, Routing, XrdCmsRRData::Routing, XrdCms::CmsRRHdr::rrCode, Say, XrdCms::Sched, XrdScheduler::Schedule(), and XrdLink::Send().
| void XrdCmsProtocol::DoIt | ( | ) | [virtual] |
| int XrdCmsProtocol::Execute | ( | XrdCmsRRData & | Data | ) |
References XrdCms::Cluster, XrdCms::CmsState, XrdCms::Config, DEBUGR, XrdCmsRouting::Delayable, EPNAME, XrdCmsRouting::Forward, XrdCmsRouter::getMethod(), XrdCmsNode::Ident, XrdCms::kYR_dnf, XrdCms::kYR_EINVAL, XrdCms::CmsRRHdr::modifier, myNode, XrdCmsCluster::NodeCnt, Reissue(), Reply_Delay(), Reply_Error(), XrdCmsRRData::Request, XrdCms::Router, XrdCmsRRData::Routing, XrdCms::CmsRRHdr::rrCode, Say, XrdCmsConfig::SUPDelay, XrdCmsState::Suspended, and XrdCmsRRData::waitVal.
Referenced by Dispatch(), and XrdCmsJob::DoIt().
| XrdCmsRouting * XrdCmsProtocol::Login_Failed | ( | const char * | Reason | ) | [private] |
References Link, and XrdLink::setEtext().
Referenced by Admit().
| XrdProtocol * XrdCmsProtocol::Match | ( | XrdLink * | lp | ) | [virtual] |
Implements XrdProtocol.
References Alloc(), XrdCms::kYR_login, XrdLink::Peek(), readWait, and XrdLink::setEtext().
| void XrdCmsProtocol::Pander | ( | const char * | manager, | |
| int | mport | |||
| ) | [private] |
References XrdCmsManList::Add(), XrdCmsManager::Add(), XrdCmsState::All_Suspend, XrdCmsConfig::AskPing, XrdCmsConfig::asManager(), XrdCmsConfig::asPeer(), XrdCmsConfig::asProxy(), XrdLink::Close(), XrdCms::CmsState, XrdCms::Config, XrdCmsManTree::Connect(), XrdInet::Connect(), DEBUG, XrdCmsManList::Del(), XrdCmsManTree::Disc(), XrdCmsConfig::DiskSS, Dispatch(), XrdCmsConfig::doWait, XrdCms::CmsLoginData::dPort, EPNAME, XrdCmsState::FES_Suspend, XrdCmsMeter::FreeSpace(), XrdCms::CmsLoginData::fsNum, XrdCms::CmsLoginData::fSpace, XrdCms::CmsLoginData::fsUtil, XrdCms::CmsLoginData::HoldTime, XrdNetDNS::IPAddr(), isUp, XrdCms::kYR_redirect, XrdCms::kYR_Version, Link, XrdCmsLogin::Login(), XrdCms::Manager, XrdCms::ManTree, XrdCms::Meter, XrdCms::CmsLoginData::Mode, Mode, XrdCms::CmsLoginData::mSpace, XrdCms::myMans, myNode, XrdCmsConfig::myPaths, myRole, XrdCmsConfig::mySID, XrdLink::Name(), XrdCmsConfig::NetTCP, XrdCmsManList::Next(), XrdCmsState::NoStaging, XrdCmsMeter::numFS(), XrdCms::CmsLoginData::Paths, XrdCmsState::Port(), XrdCmsConfig::PortTCP, XrdCmsManTree::Register(), XrdCmsManager::Remove(), Routing, Say, XrdCms::CmsLoginData::SID, XrdCms::CmsLoginData::Size, XrdSysTimer::Snooze(), XrdCms::CmsLoginData::sPort, XrdCms::srvVOps, XrdCms::supVOps, XrdCmsState::Suspended, XrdCmsMeter::TotalSpace(), XrdCmsManTree::Trying(), XrdCms::CmsLoginData::tSpace, and XrdCms::CmsLoginData::Version.
Referenced by DoIt().
| int XrdCmsProtocol::Process | ( | XrdLink * | lp | ) | [virtual] |
Implements XrdProtocol.
References Admit(), XrdCmsConfig::AskPing, XrdCms::Cluster, XrdCms::Config, XrdCmsRTable::Del(), Dispatch(), XrdCmsNode::isBound, XrdCmsNode::isConn, XrdCmsNode::isGone, Link, XrdCmsNode::Lock(), loggedIn, myNode, XrdCmsCluster::Remove(), Routing, RSlot, XrdCms::RTable, XrdLink::Serialize(), XrdLink::setEtext(), and XrdCmsNode::UnLock().
| void XrdCmsProtocol::Recycle | ( | XrdLink * | lp, | |
| int | consec, | |||
| const char * | reason | |||
| ) | [virtual] |
Implements XrdProtocol.
References XrdLink::ID, XrdSysMutex::Lock(), loggedIn, ProtLink, ProtMutex, ProtStack, Say, and XrdSysMutex::UnLock().
| void XrdCmsProtocol::Reissue | ( | XrdCmsRRData & | Data | ) | [private] |
References XrdCmsCluster::Broadcast(), XrdCmsRRData::Buff, XrdCms::Cache, XrdCms::Cluster, DEBUG, XrdCmsRRData::Dlen, EPNAME, XrdCmsPList_Anchor::Find(), XrdCmsRouter::getName(), XrdCms::kYR_hopcount, XrdCms::kYR_hopincr, XrdCms::CmsRRHdr::modifier, XrdCmsRRData::Path, XrdCmsCache::Paths, XrdCmsRRData::Request, XrdCms::Router, XrdCmsPInfo::rovec, XrdCms::CmsRRHdr::rrCode, XrdCmsPInfo::rwvec, Say, and XrdCms::CmsRRHdr::streamid.
Referenced by Execute().
| void XrdCmsProtocol::Reply_Delay | ( | XrdCmsRRData & | Data, | |
| kXR_unt32 | theDelay | |||
| ) | [private] |
References DEBUG, EPNAME, XrdCmsNode::Ident, Link, myNode, XrdCmsRouting::Repliable, XrdCmsRRData::Request, XrdCmsRRData::Routing, XrdLink::Send(), and XrdCms::CmsRRHdr::streamid.
Referenced by Execute().
| void XrdCmsProtocol::Reply_Error | ( | XrdCmsRRData & | Data, | |
| int | ecode, | |||
| const char * | etext | |||
| ) | [private] |
References DEBUG, EPNAME, XrdCmsNode::Ident, Link, myNode, XrdCmsRouting::Repliable, XrdCmsRRData::Request, XrdCmsRRData::Routing, XrdLink::Send(), and XrdCms::CmsRRHdr::streamid.
Referenced by Dispatch(), and Execute().
| int XrdCmsProtocol::Stats | ( | char * | buff, | |
| int | blen, | |||
| int | do_sync = 0 | |||
| ) | [inline, virtual] |
Implements XrdProtocol.
friend class XrdCmsJob [friend] |
XrdLink* XrdCmsProtocol::Link [private] |
Referenced by Admit(), Admit_Redirector(), XrdCmsJob::Alloc(), ConfigCheck(), Dispatch(), Login_Failed(), Pander(), Process(), XrdCmsJob::Recycle(), Reply_Delay(), and Reply_Error().
char XrdCmsProtocol::loggedIn [private] |
const int XrdCmsProtocol::maxReqSize = 16384 [static, private] |
Referenced by Dispatch().
const char* XrdCmsProtocol::myMan [private] |
int XrdCmsProtocol::myManPort [private] |
XrdCmsNode* XrdCmsProtocol::myNode [private] |
Referenced by Admit(), Admit_Redirector(), ConfigCheck(), Dispatch(), Execute(), Pander(), Process(), Reply_Delay(), and Reply_Error().
const char* XrdCmsProtocol::myRole [private] |
Referenced by Admit(), Admit_Redirector(), Alloc(), XrdCmsJob::Alloc(), DoIt(), and Pander().
XrdCmsParser XrdCmsProtocol::ProtArgs [static, private] |
Referenced by Dispatch().
XrdCmsProtocol* XrdCmsProtocol::ProtLink [private] |
XrdSysMutex XrdCmsProtocol::ProtMutex [static, private] |
XrdCmsProtocol * XrdCmsProtocol::ProtStack = 0 [static, private] |
int XrdCmsProtocol::readWait = 1000 [static, private] |
Referenced by Match().
XrdCmsRouting* XrdCmsProtocol::Routing [private] |
Referenced by Dispatch(), Pander(), and Process().
short XrdCmsProtocol::RSlot [private] |
Referenced by Admit_Redirector(), and Process().
1.7.1