#include <XrdCmsProtocol.hh>
Inheritance diagram for XrdCmsProtocol:

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 |
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 |
| static XrdCmsParser | ProtArgs |
| static const int | maxReqSize = 16384 |
| static int | readWait |
Friends | |
| class | XrdCmsJob |
Definition at line 25 of file XrdCmsProtocol.hh.
enum XrdCmsProtocol::Bearing [private] |
Definition at line 59 of file XrdCmsProtocol.hh.
| XrdCmsProtocol::XrdCmsProtocol | ( | ) | [inline] |
| XrdCmsProtocol::~XrdCmsProtocol | ( | ) | [inline] |
Definition at line 48 of file XrdCmsProtocol.hh.
| XrdCmsProtocol * XrdCmsProtocol::Alloc | ( | const char * | theRole = "", |
|
| const char * | theMan = 0, |
|||
| int | thePort = 0 | |||
| ) | [static] |
Definition at line 684 of file XrdCmsProtocol.cc.
References XrdSysError::Emsg(), XrdSysMutex::Lock(), loggedIn, myMan, myManPort, myRole, ProtLink, ProtMutex, ProtStack, XrdFrm::Say(), XrdSysMutex::UnLock(), and XrdCmsProtocol().
Referenced by XrdCmsConfig::DoIt(), Match(), and XrdCmsSupervisor::Start().
| void XrdCmsProtocol::DoIt | ( | ) | [virtual] |
| int XrdCmsProtocol::Execute | ( | XrdCmsRRData & | Data | ) |
Definition at line 185 of file XrdCmsProtocol.cc.
References XrdCms::Cluster, XrdCms::CmsState, XrdFrm::Config(), DEBUGR, XrdCmsRouting::Delayable, ECONNABORTED, EINPROGRESS, XrdSysError::Emsg(), EPNAME, XrdCmsRouting::Forward, XrdCmsRouter::getMethod(), XrdCmsNode::Ident, XrdCms::kYR_dnf, XrdCms::kYR_EINVAL, myNode, XrdCmsCluster::NodeCnt, Reissue(), Reply_Delay(), Reply_Error(), XrdCmsRRData::Request, XrdCms::Router(), XrdCmsRRData::Routing, XrdCms::CmsRRHdr::rrCode, XrdFrm::Say(), and XrdCmsState::Suspended.
Referenced by Dispatch(), and XrdCmsJob::DoIt().
| XrdProtocol * XrdCmsProtocol::Match | ( | XrdLink * | lp | ) | [virtual] |
Implements XrdProtocol.
Definition at line 217 of file XrdCmsProtocol.cc.
References Alloc(), XrdCms::kYR_login, XrdLink::Peek(), readWait, and XrdLink::setEtext().
| int XrdCmsProtocol::Process | ( | XrdLink * | lp | ) | [virtual] |
Implements XrdProtocol.
Definition at line 395 of file XrdCmsProtocol.cc.
References Admit(), XrdCms::Cluster, XrdFrm::Config(), XrdCmsRTable::Del(), Dispatch(), XrdCmsNode::isBound, XrdCmsNode::isConn, isDown, XrdCmsNode::isGone, isLateral, 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.
Definition at line 445 of file XrdCmsProtocol.cc.
References XrdSysError::Emsg(), XrdLink::ID, XrdSysMutex::Lock(), loggedIn, ProtLink, ProtMutex, ProtStack, XrdFrm::Say(), and XrdSysMutex::UnLock().
| int XrdCmsProtocol::Stats | ( | char * | buff, | |
| int | blen, | |||
| int | do_sync = 0 | |||
| ) | [inline, virtual] |
| XrdCmsRouting * XrdCmsProtocol::Admit | ( | ) | [private] |
Definition at line 466 of file XrdCmsProtocol.cc.
References XrdCmsCluster::Add(), AddPath(), Admit_Redirector(), XrdCms::Cache, XrdCms::Cluster, XrdCms::CMS_isMan, XrdCms::CMS_isPeer, XrdCms::CMS_isProxy, XrdCms::CMS_noStage, XrdCms::CMS_Suspend, XrdCms::CmsState, XrdFrm::Config(), ConfigCheck(), DEBUG, XrdCmsNode::DiskFree, XrdCmsNode::DiskMinF, XrdCmsNode::DiskNums, XrdCmsNode::DiskTotal, XrdCmsNode::DiskUtil, XrdSysError::Emsg(), EPNAME, XrdOucTokenizer::GetLine(), XrdOucTokenizer::GetToken(), XrdCmsNode::Ident, XrdCmsPList_Anchor::Insert(), XrdCmsNode::isDisable, XrdCmsNode::isPeer, XrdCmsNode::isSuspend, Link, Login_Failed(), XrdCms::Manager, XrdCmsNode::Mask(), XrdCms::Meter, myNode, myRole, XrdLink::Name(), XrdCmsCache::Paths, XrdCmsManager::Reset(), XrdCmsCluster::ResetRef(), XrdCmsPInfo::rovec, XrdCms::rspVOps(), XrdFrm::Say(), XrdLink::setID(), XrdCmsMeter::setVirtUpdt(), Source, XrdCmsPInfo::ssvec, XrdCmsState::Suspended, XrdCmsNode::SyncSpace(), Trace, and TRACE_Debug.
Referenced by Process().
| XrdCmsRouting* XrdCmsProtocol::Admit_DataServer | ( | int | ) | [private] |
| XrdCmsRouting * XrdCmsProtocol::Admit_Redirector | ( | int | ) | [private] |
Definition at line 619 of file XrdCmsProtocol.cc.
References XrdCmsRTable::Add(), XrdCms::CmsState, DEBUG, XrdSysError::Emsg(), EPNAME, XrdCmsNode::Ident, XrdCms::kYR_status, Link, XrdCmsNode::Lock(), myNode, myRole, XrdCms::rdrVOps(), RSlot, XrdCms::RTable, XrdFrm::Say(), XrdCmsNode::Send(), XrdCmsNode::setSlot(), and XrdCmsState::Suspended.
Referenced by Admit().
| XrdCmsRouting* XrdCmsProtocol::Admit_Supervisor | ( | int | ) | [private] |
| SMask_t XrdCmsProtocol::AddPath | ( | XrdCmsNode * | nP, | |
| const char * | pType, | |||
| const char * | Path | |||
| ) | [private] |
Definition at line 655 of file XrdCmsProtocol.cc.
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().
| int XrdCmsProtocol::Authenticate | ( | ) | [private] |
| void XrdCmsProtocol::ConfigCheck | ( | unsigned char * | theConfig | ) | [private] |
Definition at line 715 of file XrdCmsProtocol.cc.
References XrdCmsCache::Bounce(), XrdCms::Cache, XrdCmsNode::ConfigID, XrdOucCRC::CRC32(), XrdSysError::Emsg(), XrdCmsNode::ID(), Link, XrdCmsNode::Mask(), myNode, XrdLink::Name(), XrdCmsCache::Paths, XrdCmsPList_Anchor::Remove(), and XrdFrm::Say().
Referenced by Admit().
| const char * XrdCmsProtocol::Dispatch | ( | Bearing | cDir, | |
| int | maxWait, | |||
| int | maxTries | |||
| ) | [private] |
Definition at line 745 of file XrdCmsProtocol.cc.
References XrdCmsJob::Alloc(), XrdLink::Bind(), DEBUG, Debug, ECONNABORTED, XrdSysError::Emsg(), EPNAME, ETIMEDOUT, Execute(), XrdCmsRouter::getName(), XrdCmsRouting::getRoute(), XrdSysThread::ID(), XrdCmsNode::Ident, isDown, XrdCmsRouting::isSync, isUp, XrdCms::kYR_EINVAL, XrdCms::kYR_ping, XrdCms::kYR_pong, XrdCms::kYR_raw, Link, maxReqSize, myNode, XrdLink::Name(), XrdCmsRouting::noArgs, XrdCmsRRData::Objectify(), XrdCmsParser::Parse(), ProtArgs, QTRACE, XrdLink::RecvAll(), Reply_Error(), XrdCms::Router(), Routing, XrdFrm::Say(), XrdCms::Sched, XrdScheduler::Schedule(), XrdLink::Send(), and sprintf().
| XrdCmsRouting * XrdCmsProtocol::Login_Failed | ( | const char * | Reason | ) | [private] |
Definition at line 854 of file XrdCmsProtocol.cc.
References Link, and XrdLink::setEtext().
Referenced by Admit().
| void XrdCmsProtocol::Pander | ( | const char * | manager, | |
| int | mport | |||
| ) | [private] |
Definition at line 248 of file XrdCmsProtocol.cc.
References XrdCmsManager::Add(), XrdCmsManList::Add(), XrdCmsState::All_Suspend, XrdLink::Close(), XrdCms::CmsState, XrdFrm::Config(), XrdCmsManTree::Connect(), DEBUG, XrdCmsManList::Del(), XrdCmsManTree::Disc(), Dispatch(), XrdCms::CmsLoginData::dPort, XrdSysError::Emsg(), EPNAME, XrdCmsState::FES_Suspend, free(), 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, myRole, XrdCmsManList::Next(), XrdCmsState::NoStaging, XrdCmsMeter::numFS(), XrdCms::CmsLoginData::Paths, XrdCmsState::Port(), XrdCmsManTree::Register(), XrdCmsManager::Remove(), Routing, XrdFrm::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, XrdCms::CmsLoginData::Version, and XRDNET_NOEMSG.
Referenced by DoIt().
| void XrdCmsProtocol::Reissue | ( | XrdCmsRRData & | Data | ) | [private] |
Definition at line 864 of file XrdCmsProtocol.cc.
References XrdCmsCluster::Broadcast(), XrdCms::Cache, XrdCms::Cluster, DEBUG, XrdSysError::Emsg(), EPNAME, XrdCmsPList_Anchor::Find(), XrdCmsRouter::getName(), XrdCms::kYR_hopcount, XrdCms::kYR_hopincr, XrdCmsCache::Paths, XrdCms::Router(), XrdCmsPInfo::rovec, XrdCmsPInfo::rwvec, and XrdFrm::Say().
Referenced by Execute().
| void XrdCmsProtocol::Reply_Delay | ( | XrdCmsRRData & | Data, | |
| kXR_unt32 | theDelay | |||
| ) | [private] |
Definition at line 907 of file XrdCmsProtocol.cc.
References DEBUG, EPNAME, XrdCmsNode::Ident, XrdCms::kYR_wait, Link, myNode, XrdCmsRouting::Repliable, and XrdLink::Send().
Referenced by Execute().
| void XrdCmsProtocol::Reply_Error | ( | XrdCmsRRData & | Data, | |
| int | ecode, | |||
| const char * | etext | |||
| ) | [private] |
Definition at line 926 of file XrdCmsProtocol.cc.
References DEBUG, EPNAME, XrdCmsNode::Ident, XrdCms::kYR_error, Link, myNode, n, XrdCmsRouting::Repliable, and XrdLink::Send().
Referenced by Dispatch(), and Execute().
friend class XrdCmsJob [friend] |
Definition at line 27 of file XrdCmsProtocol.hh.
XrdSysMutex XrdCmsProtocol::ProtMutex [static, private] |
XrdCmsProtocol * XrdCmsProtocol::ProtStack [static, private] |
XrdCmsParser XrdCmsProtocol::ProtArgs [static, private] |
XrdCmsProtocol* XrdCmsProtocol::ProtLink [private] |
XrdCmsRouting* XrdCmsProtocol::Routing [private] |
const int XrdCmsProtocol::maxReqSize = 16384 [static, private] |
XrdLink* XrdCmsProtocol::Link [private] |
Definition at line 76 of file XrdCmsProtocol.hh.
Referenced by Admit(), Admit_Redirector(), XrdCmsJob::Alloc(), ConfigCheck(), Dispatch(), Login_Failed(), Pander(), Process(), XrdCmsJob::Recycle(), Reply_Delay(), and Reply_Error().
int XrdCmsProtocol::readWait [static, private] |
const char* XrdCmsProtocol::myRole [private] |
Definition at line 78 of file XrdCmsProtocol.hh.
Referenced by Admit(), Admit_Redirector(), Alloc(), XrdCmsJob::Alloc(), DoIt(), and Pander().
const char* XrdCmsProtocol::myMan [private] |
int XrdCmsProtocol::myManPort [private] |
XrdCmsNode* XrdCmsProtocol::myNode [private] |
Definition at line 81 of file XrdCmsProtocol.hh.
Referenced by Admit(), Admit_Redirector(), ConfigCheck(), Dispatch(), Execute(), Pander(), Process(), Reply_Delay(), and Reply_Error().
short XrdCmsProtocol::RSlot [private] |
char XrdCmsProtocol::loggedIn [private] |
1.5.1