#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] |