xrootd
|
#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] |
XrdCmsProtocol::~XrdCmsProtocol | ( | ) | [inline] |
SMask_t XrdCmsProtocol::AddPath | ( | XrdCmsNode * | nP, |
const char * | pType, | ||
const char * | Path | ||
) | [private] |
XrdCmsRouting * XrdCmsProtocol::Admit | ( | ) | [private] |
References XrdCmsCluster::Add(), XrdCmsLogin::Admit(), 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, DEBUG, XrdCms::CmsLoginData::dPort, XrdSysError::Emsg(), EPNAME, XrdCms::CmsLoginData::fsNum, XrdCms::CmsLoginData::fSpace, XrdCms::CmsLoginData::fsUtil, XrdOucTokenizer::GetLine(), XrdOucTokenizer::GetToken(), XrdCms::CmsLoginData::HoldTime, XrdCmsPList_Anchor::Insert(), XrdCms::CmsLoginData::kYR_debug, XrdCms::CmsLoginData::kYR_director, XrdCms::CmsLoginData::kYR_manager, XrdCms::CmsLoginData::kYR_nostage, XrdCms::CmsLoginData::kYR_peer, XrdCms::CmsLoginData::kYR_proxy, XrdCms::CmsLoginData::kYR_server, XrdCms::CmsLoginData::kYR_suspend, XrdCms::CmsLoginData::kYR_trying, XrdCmsConfig::LUPHold, XrdCms::Manager, XrdCms::Meter, XrdCms::CmsLoginData::Mode, XrdCms::CmsLoginData::mSpace, XrdCmsCache::Paths, XrdCms::CmsLoginData::Paths, XrdCmsManager::Reset(), XrdCmsCluster::ResetRef(), XrdCmsPInfo::rovec, XrdCms::rspVOps, XrdCms::Say, XrdCmsMeter::setVirtUpdt(), XrdCms::CmsLoginData::SID, XrdCms::CmsLoginData::sPort, XrdCmsPInfo::ssvec, XrdCmsState::Suspended, XrdCms::Trace, TRACE_Debug, XrdCms::CmsLoginData::tSpace, and XrdOucTrace::What.
XrdCmsRouting* XrdCmsProtocol::Admit_DataServer | ( | int | ) | [private] |
XrdCmsRouting * XrdCmsProtocol::Admit_Redirector | ( | int | wasSuspended | ) | [private] |
XrdCmsRouting* XrdCmsProtocol::Admit_Supervisor | ( | int | ) | [private] |
XrdCmsProtocol * XrdCmsProtocol::Alloc | ( | const char * | theRole = "" , |
const char * | theMan = 0 , |
||
int | thePort = 0 |
||
) | [static] |
References XrdSysError::Emsg(), loggedIn, myMan, myManPort, myRole, ProtLink, and XrdCms::Say.
Referenced by XrdCmsConfig::DoIt(), Match(), and XrdCmsSupervisor::Start().
int XrdCmsProtocol::Authenticate | ( | ) | [private] |
void XrdCmsProtocol::ConfigCheck | ( | unsigned char * | theConfig | ) | [private] |
const char * XrdCmsProtocol::Dispatch | ( | Bearing | cDir, |
int | maxWait, | ||
int | maxTries | ||
) | [private] |
References XrdCmsJob::Alloc(), XrdCmsRRData::Blen, XrdCmsRRData::Buff, XrdCms::CmsRRHdr::datalen, DEBUG, Debug, XrdCmsRRData::Dlen, ECONNABORTED, XrdSysError::Emsg(), EPNAME, ETIMEDOUT, XrdCmsRRData::getBuff(), XrdCmsRouter::getName(), XrdSysThread::ID(), XrdCmsRRData::Ident, XrdCmsRouting::isSync, XrdCms::kYR_EINVAL, XrdCms::kYR_ping, XrdCms::kYR_pong, XrdCms::kYR_raw, XrdCms::CmsRRHdr::modifier, XrdCmsRouting::noArgs, XrdCmsRRData::Objectify(), XrdCmsRRData::Path, XrdCmsRRData::PathLen, QTRACE, XrdCmsRRData::Request, XrdCms::Router, XrdCmsRRData::Routing, XrdCms::CmsRRHdr::rrCode, XrdCms::Say, XrdCms::Sched, and XrdScheduler::Schedule().
void XrdCmsProtocol::DoIt | ( | ) | [virtual] |
Implements XrdJob.
int XrdCmsProtocol::Execute | ( | XrdCmsRRData & | Data | ) |
References XrdCms::Cluster, XrdCms::CmsState, XrdCms::Config, DEBUGR, XrdCmsRouting::Delayable, ECONNABORTED, EINPROGRESS, XrdSysError::Emsg(), EPNAME, XrdCmsRouting::Forward, XrdCmsRouter::getMethod(), XrdCms::kYR_dnf, XrdCms::kYR_EINVAL, XrdCms::CmsRRHdr::modifier, XrdCmsCluster::NodeCnt, XrdCmsRRData::Request, XrdCms::Router, XrdCmsRRData::Routing, XrdCms::CmsRRHdr::rrCode, XrdCms::Say, XrdCmsConfig::SUPDelay, XrdCmsState::Suspended, and XrdCmsRRData::waitVal.
XrdCmsRouting * XrdCmsProtocol::Login_Failed | ( | const char * | Reason | ) | [private] |
XrdProtocol * XrdCmsProtocol::Match | ( | XrdLink * | lp | ) | [virtual] |
Implements XrdProtocol.
References Alloc(), XrdCms::kYR_login, XrdLink::Peek(), 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(), XrdCms::CmsState, XrdCms::Config, XrdCmsManTree::Connect(), XrdInet::Connect(), DEBUG, XrdCmsManList::Del(), XrdCmsManTree::Disc(), XrdCmsConfig::DiskSS, XrdCmsConfig::doWait, XrdCms::CmsLoginData::dPort, XrdSysError::Emsg(), EPNAME, XrdCmsState::FES_Suspend, XrdCmsMeter::FreeSpace(), XrdCms::CmsLoginData::fsNum, XrdCms::CmsLoginData::fSpace, XrdCms::CmsLoginData::fsUtil, XrdCms::CmsLoginData::HoldTime, XrdNetDNS::IPAddr(), XrdCms::CmsLoginData::kYR_manager, XrdCms::CmsLoginData::kYR_nostage, XrdCms::CmsLoginData::kYR_peer, XrdCms::CmsLoginData::kYR_proxy, XrdCms::kYR_redirect, XrdCms::CmsLoginData::kYR_server, XrdCms::CmsLoginData::kYR_suspend, XrdCms::CmsLoginData::kYR_trying, XrdCms::kYR_Version, XrdCmsLogin::Login(), XrdCms::Manager, XrdCms::ManTree, XrdCms::Meter, XrdCms::CmsLoginData::Mode, Mode, XrdCms::CmsLoginData::mSpace, XrdCms::myMans, XrdCmsConfig::myPaths, XrdCmsConfig::mySID, XrdCmsConfig::NetTCP, XrdCmsManList::Next(), XrdCmsState::NoStaging, XrdCmsMeter::numFS(), XrdCms::CmsLoginData::Paths, XrdCmsState::Port(), XrdCmsConfig::PortTCP, XrdCmsManTree::Register(), XrdCmsManager::Remove(), XrdCms::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.
int XrdCmsProtocol::Process | ( | XrdLink * | lp | ) | [virtual] |
Implements XrdProtocol.
References XrdCmsConfig::AskPing, XrdCms::Cluster, XrdCms::Config, XrdCmsRTable::Del(), XrdCmsCluster::Remove(), XrdCms::RTable, XrdLink::Serialize(), and XrdLink::setEtext().
void XrdCmsProtocol::Recycle | ( | XrdLink * | lp, |
int | consec, | ||
const char * | reason | ||
) | [virtual] |
Implements XrdProtocol.
References XrdSysError::Emsg(), XrdLink::ID, and XrdCms::Say.
void XrdCmsProtocol::Reissue | ( | XrdCmsRRData & | Data | ) | [private] |
References XrdCmsCluster::Broadcast(), XrdCmsRRData::Buff, XrdCms::Cache, XrdCms::Cluster, DEBUG, XrdCmsRRData::Dlen, XrdSysError::Emsg(), 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, XrdCms::Say, and XrdCms::CmsRRHdr::streamid.
void XrdCmsProtocol::Reply_Delay | ( | XrdCmsRRData & | Data, |
kXR_unt32 | theDelay | ||
) | [private] |
void XrdCmsProtocol::Reply_Error | ( | XrdCmsRRData & | Data, |
int | ecode, | ||
const char * | etext | ||
) | [private] |
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 XrdCmsJob::Alloc().
char XrdCmsProtocol::loggedIn [private] |
Referenced by Alloc().
const int XrdCmsProtocol::maxReqSize = 16384 [static, private] |
const char* XrdCmsProtocol::myMan [private] |
Referenced by Alloc().
int XrdCmsProtocol::myManPort [private] |
Referenced by Alloc().
XrdCmsNode* XrdCmsProtocol::myNode [private] |
const char* XrdCmsProtocol::myRole [private] |
Referenced by Alloc(), and XrdCmsJob::Alloc().
XrdCmsParser XrdCmsProtocol::ProtArgs [static, private] |
XrdCmsProtocol* XrdCmsProtocol::ProtLink [private] |
Referenced by Alloc().
XrdSysMutex XrdCmsProtocol::ProtMutex [static, private] |
XrdCmsProtocol * XrdCmsProtocol::ProtStack = 0 [static, private] |
int XrdCmsProtocol::readWait = 1000 [static, private] |
XrdCmsRouting* XrdCmsProtocol::Routing [private] |
short XrdCmsProtocol::RSlot [private] |