xrootd
|
#include <XrdPollPoll.hh>
Public Member Functions | |
void | Detach (XrdLink *lp) |
void | Disable (XrdLink *lp, const char *etxt=0) |
int | Enable (XrdLink *lp) |
void | Start (XrdSysSemaphore *syncp, int &rc) |
XrdPollPoll (struct pollfd *pp, int numfd) | |
~XrdPollPoll () | |
Protected Member Functions | |
void | doDetach (int pti) |
void | Exclude (XrdLink *lp) |
int | Include (XrdLink *lp) |
Private Member Functions | |
void | doRequests (int maxreq) |
void | dqLink (XrdLink *lp) |
void | LogEvent (int req, int pollfd, int cmdfd) |
void | Recover (int numleft) |
void | Restart (int ecode) |
Private Attributes | |
struct pollfd * | PollTab |
int | PollTNum |
XrdLink * | PollQ |
XrdSysMutex | PollMutex |
int | maxent |
XrdPollPoll::XrdPollPoll | ( | struct pollfd * | pp, |
int | numfd | ||
) |
XrdPollPoll::~XrdPollPoll | ( | ) |
References PollTab.
void XrdPollPoll::Disable | ( | XrdLink * | lp, |
const char * | etxt = 0 |
||
) | [virtual] |
Implements XrdPoll.
References XrdPoll::PipeData::Arg, XrdPoll::CmdFD, XrdPoll::PipeData::DiFD, dqLink(), XrdSysError::Emsg(), XrdLink::FD, XrdPoll::Finish(), XrdLink::ID, XrdLink::inQ, XrdLink::isEnabled, XrdSysMutex::Lock(), XrdPoll::PipeData::Parms, XrdPoll::PID, XrdLink::PollEnt, XrdPoll::PollPipe, PollTab, XrdPoll::PipeData::Post, XrdPoll::PipeData::req, XrdScheduler::Schedule(), XrdPoll::PipeData::theSem, TRACEI, XrdSysMutex::UnLock(), XrdSysSemaphore::Wait(), and write().
Referenced by Exclude().
void XrdPollPoll::doDetach | ( | int | pti | ) | [protected] |
References XrdSysError::Emsg(), pollfd::fd, XrdSysMutex::Lock(), PollMutex, PollTab, PollTNum, and XrdSysMutex::UnLock().
Referenced by doRequests().
void XrdPollPoll::doRequests | ( | int | maxreq | ) | [private] |
References XrdPoll::PipeData::Arg, XrdPoll::PipeData::DiFD, doDetach(), XrdSysError::Emsg(), XrdPoll::PipeData::EnFD, pollfd::events, pollfd::fd, XrdLink::fd2link(), XrdPoll::getRequest(), XrdLink::isEnabled, LogEvent(), XrdPoll::numEnabled, XrdPoll::PipeData::Parms, XrdPoll::PID, POLLIN, POLLRDNORM, PollTab, PollTNum, XrdSysSemaphore::Post(), XrdPoll::PipeData::Post, XrdPoll::PipeData::req, XrdPoll::ReqBuff, XrdPoll::PipeData::RmFD, XrdPoll::PipeData::theSem, and TRACE.
Referenced by Start().
void XrdPollPoll::dqLink | ( | XrdLink * | lp | ) | [private] |
References XrdSysError::Emsg(), XrdLink::ID, XrdLink::inQ, XrdSysMutex::Lock(), XrdLink::Next, PollMutex, PollQ, and XrdSysMutex::UnLock().
int XrdPollPoll::Enable | ( | XrdLink * | lp | ) | [virtual] |
Implements XrdPoll.
References XrdPoll::PipeData::Arg, XrdPoll::CmdFD, XrdSysError::Emsg(), XrdPoll::PipeData::EnFD, XrdLink::FD, XrdLink::ID, XrdLink::inQ, XrdLink::isEnabled, XrdSysMutex::Lock(), XrdLink::Next, XrdPoll::PipeData::Parms, XrdPoll::PID, XrdLink::PollEnt, PollMutex, XrdPoll::PollPipe, PollQ, PollTab, XrdPoll::PipeData::req, TRACEI, XrdSysMutex::UnLock(), and write().
void XrdPollPoll::Exclude | ( | XrdLink * | lp | ) | [protected, virtual] |
Implements XrdPoll.
References XrdPoll::PipeData::Arg, XrdPoll::CmdFD, Disable(), dqLink(), XrdSysError::Emsg(), XrdLink::FD, XrdLink::ID, XrdLink::inQ, XrdLink::isEnabled, XrdSysMutex::Lock(), XrdPoll::PipeData::Parms, XrdPoll::PID, XrdLink::PollEnt, XrdPoll::PollPipe, PollTab, XrdPoll::PipeData::Post, XrdPoll::PipeData::req, XrdPoll::PipeData::RmFD, XrdPoll::PipeData::theSem, TRACEI, XrdSysMutex::UnLock(), XrdSysSemaphore::Wait(), and write().
int XrdPollPoll::Include | ( | XrdLink * | lp | ) | [protected, virtual] |
Implements XrdPoll.
References XrdSysError::Emsg(), pollfd::events, XrdLink::FD, pollfd::fd, XrdLink::ID, XrdSysMutex::Lock(), maxent, XrdLink::PollEnt, POLLIN, PollMutex, POLLRDNORM, PollTab, PollTNum, pollfd::revents, and XrdSysMutex::UnLock().
void XrdPollPoll::LogEvent | ( | int | req, |
int | pollfd, | ||
int | cmdfd | ||
) | [private] |
References XrdPoll::PipeData::DiFD, XrdSysError::Emsg(), XrdPoll::PipeData::EnFD, XrdLink::fd2link(), XrdLink::ID, XrdPoll::PID, XrdPoll::PipeData::req, XrdPoll::ReqBuff, XrdPoll::PipeData::RmFD, and snprintf.
Referenced by doRequests().
void XrdPollPoll::Recover | ( | int | numleft | ) | [private] |
References XrdSysError::Emsg(), pollfd::fd, XrdLink::fd2link(), XrdLink::ID, XrdLink::isEnabled, PollTab, PollTNum, and pollfd::revents.
Referenced by Start().
void XrdPollPoll::Restart | ( | int | ecode | ) | [private] |
References XrdSysError::Emsg(), pollfd::fd, XrdPoll::Finish(), XrdSysMutex::Lock(), XrdLink::Next, XrdPoll::PID, XrdLink::PollEnt, PollMutex, PollQ, XrdScheduler::Schedule(), XrdPoll::TID, TRACE, and XrdSysMutex::UnLock().
Referenced by Start().
void XrdPollPoll::Start | ( | XrdSysSemaphore * | syncp, |
int & | rc | ||
) | [virtual] |
Implements XrdPoll.
References doRequests(), XrdSysError::Emsg(), pollfd::events, pollfd::fd, XrdPoll::Finish(), XrdLink::ID, XrdLink::inQ, XrdLink::isEnabled, XrdSysMutex::Lock(), XrdLink::Next, XrdJob::NextJob, XrdPoll::numEvents, XrdPoll::numInterrupts, poll(), XrdPoll::Poll2Text(), XrdLink::PollEnt, POLLIN, PollMutex, PollQ, POLLRDNORM, PollTab, PollTNum, XrdSysSemaphore::Post(), Recover(), XrdPoll::ReqFD, Restart(), pollfd::revents, XrdScheduler::Schedule(), and XrdSysMutex::UnLock().
int XrdPollPoll::maxent [private] |
Referenced by Include(), and XrdPollPoll().
XrdSysMutex XrdPollPoll::PollMutex [private] |
XrdLink* XrdPollPoll::PollQ [private] |
Referenced by dqLink(), Enable(), Restart(), Start(), and XrdPollPoll().
struct pollfd* XrdPollPoll::PollTab [private] |
Referenced by Disable(), doDetach(), doRequests(), Enable(), Exclude(), Include(), Recover(), Start(), XrdPollPoll(), and ~XrdPollPoll().
int XrdPollPoll::PollTNum [private] |
Referenced by doDetach(), doRequests(), Include(), Recover(), Start(), and XrdPollPoll().