xrootd
Public Member Functions | Protected Member Functions | Private Member Functions | Private Attributes | Static Private Attributes | List of all members
XrdSys::IOEvents::PollPoll Class Reference
Inheritance diagram for XrdSys::IOEvents::PollPoll:
Inheritance graph
[legend]
Collaboration diagram for XrdSys::IOEvents::PollPoll:
Collaboration graph
[legend]

Public Member Functions

 PollPoll (int &rc, int numfd, int pFD[2])
 
 ~PollPoll ()
 
- Public Member Functions inherited from XrdSys::IOEvents::Poller
void Stop ()
 
 Poller (int cFD, int rFD)
 
virtual ~Poller ()
 Destructor. Stop() is effecively called when this object is deleted. More...
 

Protected Member Functions

void Begin (XrdSysSemaphore *syncp, int &rc, const char **eMsg)
 
void Exclude (Channel *cP, bool &isLocked, bool dover=1)
 
bool Include (Channel *cP, int &eNum, const char **eTxt, bool &isLocked)
 
bool Modify (Channel *cP, int &eNum, const char **eTxt, bool &isLocked)
 
void Shutdown ()
 
- Protected Member Functions inherited from XrdSys::IOEvents::Poller
void CbkTMO ()
 
bool CbkXeq (Channel *cP, int events, int eNum, const char *eTxt)
 
int GetFault (Channel *cP)
 
int GetPollEnt (Channel *cP)
 
int GetRequest ()
 
bool Init (Channel *cP, int &eNum, const char **eTxt, bool &isLockd)
 
void LockChannel (Channel *cP)
 
int Poll2Enum (short events)
 
int SendCmd (PipeData &cmd)
 
void SetPollEnt (Channel *cP, int ptEnt)
 
bool TmoAdd (Channel *cP)
 
void TmoDel (Channel *cP)
 
int TmoGet ()
 
void UnLockChannel (Channel *cP)
 

Private Member Functions

void Dispatch (int ptent, int pollEv)
 
void FDMod (int ptnum, int fd, int events)
 
void FDRem (int ptnum)
 
bool Process ()
 

Private Attributes

XrdSysRecMutex pollMutex
 
struct pollfd * pollTab
 
int pollMax
 
int pollNum
 
struct pollfd * pnewTab
 
Channel ** chnlTab
 
int chnlMax
 
int chnlNum
 

Static Private Attributes

static const int disFD = 0x80000000
 

Additional Inherited Members

- Static Public Member Functions inherited from XrdSys::IOEvents::Poller
static PollerCreate (int &eNum, const char **eTxt=0)
 
- Protected Attributes inherited from XrdSys::IOEvents::Poller
ChannelattBase
 
ChanneltmoBase
 
pthread_t pollTid
 
struct pollfd pipePoll
 
int cmdFD
 
int reqFD
 
PipeData reqBuff
 
char * pipeBuff
 
int pipeBlen
 
bool wakePend
 
bool chDead
 
- Static Protected Attributes inherited from XrdSys::IOEvents::Poller
static time_t maxTime = (sizeof(time_t) == 8 ? 0x7fffffffffffffffLL : 0x7fffffff)
 

Constructor & Destructor Documentation

XrdSys::IOEvents::PollPoll::PollPoll ( int &  rc,
int  numfd,
int  pFD[2] 
)
XrdSys::IOEvents::PollPoll::~PollPoll ( )
inline

Member Function Documentation

void XrdSys::IOEvents::PollPoll::Begin ( XrdSysSemaphore syncp,
int &  rc,
const char **  eTxt 
)
protectedvirtual

Start the polling event loop. An implementation must be supplied. Begin() is called via the internal BootStrap class from a new thread.

Implements XrdSys::IOEvents::Poller.

References XrdSysSemaphore::Post().

void XrdSys::IOEvents::PollPoll::Dispatch ( int  ptent,
int  pollEv 
)
private
void XrdSys::IOEvents::PollPoll::Exclude ( Channel cP,
bool &  isLocked,
bool  dover = 1 
)
protectedvirtual

Remove a channel to the poll set. An implementation must be supplied. The channel is locked when this method is called but must be unlocked by the method if a command is sent to the poller thread and isLocked set to false.

Implements XrdSys::IOEvents::Poller.

References XrdSys::IOEvents::Channel::GetFD(), and ISPOLLER.

void XrdSys::IOEvents::PollPoll::FDMod ( int  ptnum,
int  fd,
int  events 
)
private
void XrdSys::IOEvents::PollPoll::FDRem ( int  ptnum)
private
bool XrdSys::IOEvents::PollPoll::Include ( Channel cP,
int &  eNum,
const char **  eTxt,
bool &  isLocked 
)
protectedvirtual

Add a channel to the poll set. An implementation must be supplied. The channel is locked when this method is called but must be unlocked by the method if a command is sent to the poller thread and isLocked set to false.

Implements XrdSys::IOEvents::Poller.

References XrdSys::IOEvents::Channel::GetEvents(), XrdSys::IOEvents::Channel::GetFD(), and ISPOLLER.

bool XrdSys::IOEvents::PollPoll::Modify ( Channel cP,
int &  eNum,
const char **  eTxt,
bool &  isLocked 
)
protectedvirtual

Modify the event status of a channel. An implementation must be supplied. The channel is locked when this method is called but must be unlocked by the method if a command is sent to the poller thread and isLocked set to false.

Implements XrdSys::IOEvents::Poller.

References XrdSys::IOEvents::Channel::GetEvents(), XrdSys::IOEvents::Channel::GetFD(), and ISPOLLER.

bool XrdSys::IOEvents::PollPoll::Process ( )
private
void XrdSys::IOEvents::PollPoll::Shutdown ( )
protectedvirtual

Shutdown the poller. An implementation must be supplied. The shutdown method must release any allocated storage and close private file descriptors. The polling thread will have already been terminated and x-thread pipe closed. Warning: the derived destructor must call Stop() and do nothing else!

Implements XrdSys::IOEvents::Poller.

References XrdSysMutex::Lock(), and XrdSysMutex::UnLock().

Member Data Documentation

int XrdSys::IOEvents::PollPoll::chnlMax
private

Referenced by PollPoll().

int XrdSys::IOEvents::PollPoll::chnlNum
private

Referenced by PollPoll().

Channel** XrdSys::IOEvents::PollPoll::chnlTab
private

Referenced by PollPoll().

const int XrdSys::IOEvents::PollPoll::disFD = 0x80000000
staticprivate
struct pollfd* XrdSys::IOEvents::PollPoll::pnewTab
private

Referenced by PollPoll().

int XrdSys::IOEvents::PollPoll::pollMax
private

Referenced by PollPoll().

XrdSysRecMutex XrdSys::IOEvents::PollPoll::pollMutex
private
int XrdSys::IOEvents::PollPoll::pollNum
private

Referenced by PollPoll().

struct pollfd* XrdSys::IOEvents::PollPoll::pollTab
private

Referenced by PollPoll().


The documentation for this class was generated from the following file: