1 #ifndef __XRDSYSIOEVENTS_HH__ 2 #define __XRDSYSIOEVENTS_HH__ 35 #include <sys/types.h> 116 virtual bool Event(
Channel *chP,
void *cbArg,
int evFlags) = 0;
131 virtual void Fatal(
Channel *chP,
void *cbArg,
int eNum,
const char *eTxt)
133 (void)chP; (void)cbArg; (void)eNum; (void)eTxt;
146 virtual void Stop(
Channel *chP,
void *cbArg) { (void)chP; (void)cbArg;}
212 bool Disable(
int events,
const char **eText=0);
248 bool Enable(
int events,
int timeout=0,
const char **eText=0);
257 void GetCallBack(
CallBack **cbP,
void **cbArg);
267 inline int GetEvents() {
return (chPoller ? static_cast<int>(chEvents) : -1);}
287 void SetCallBack(
CallBack *cbP,
void *cbArg=0);
350 enum Status {isClear = 0, isCBMode, isDead};
356 void Reset(
Poller *thePoller,
int fd,
int eNum=0);
373 friend class BootStrap;
400 static Poller *Create(
int &eNum,
const char **eTxt=0,
int crOpts=0);
436 bool CbkXeq(
Channel *cP,
int events,
int eNum,
const char *eTxt);
440 bool Init(
Channel *cP,
int &eNum,
const char **eTxt,
bool &isLockd);
442 int Poll2Enum(
short events);
444 void SetPollEnt(
Channel *cP,
int ptEnt);
445 bool TmoAdd(
Channel *cP,
int tmoSet);
453 virtual void Begin(
XrdSysSemaphore *syncp,
int &rc,
const char **eTxt) = 0;
459 virtual void Exclude(
Channel *cP,
bool &isLocked,
bool dover=1) = 0;
465 virtual bool Include(
Channel *cP,
474 virtual bool Modify (
Channel *cP,
484 virtual void Shutdown() = 0;
493 struct pollfd pipePoll;
498 enum cmd {NoOp = 0, MdFD = 1, Post = 2,
499 MiFD = 3, RmFD = 4, Stop = 5};
502 : req(reQ), evt(evT), ent(enT), fd(fD),
518 void Detach(
Channel *cP,
bool &isLocked,
bool keep=
true);
524 static Poller *newPoller(
int pFD[2],
int &eNum,
const char **eTxt);
Channel * prev
Definition: XrdSysIOEvents.hh:329
time_t wrDL
Definition: XrdSysIOEvents.hh:345
#define CPP_ATOMIC_TYPE(kind)
Definition: XrdSysAtomics.hh:97
Definition: XrdSysPthread.hh:168
int GetEvents()
Definition: XrdSysIOEvents.hh:267
char chEvents
Definition: XrdSysIOEvents.hh:348
char dlType
Definition: XrdSysIOEvents.hh:347
int reqFD
Definition: XrdSysIOEvents.hh:495
Channel * attBase
Definition: XrdSysIOEvents.hh:488
virtual void Stop(Channel *chP, void *cbArg)
Definition: XrdSysIOEvents.hh:146
Status
Definition: XrdSysIOEvents.hh:350
virtual void Fatal(Channel *chP, void *cbArg, int eNum, const char *eTxt)
Definition: XrdSysIOEvents.hh:131
int GetFD()
Definition: XrdSysIOEvents.hh:276
int cmdFD
Definition: XrdSysIOEvents.hh:494
dlQ attList
Definition: XrdSysIOEvents.hh:333
time_t deadLine
Definition: XrdSysIOEvents.hh:346
virtual ~CallBack()
Destructor.
Definition: XrdSysIOEvents.hh:158
virtual ~Poller()
Destructor. Stop() is effecively called when this object is deleted.
Definition: XrdSysIOEvents.hh:430
char reMod
Definition: XrdSysIOEvents.hh:353
Poller * chPoller
Definition: XrdSysIOEvents.hh:336
char inPSet
Definition: XrdSysIOEvents.hh:352
Channel * tmoBase
Definition: XrdSysIOEvents.hh:489
short chFault
Definition: XrdSysIOEvents.hh:354
unsigned char tmoMask
Definition: XrdSysIOEvents.hh:509
XrdSysRecMutex chMutex
Definition: XrdSysIOEvents.hh:331
char * pipeBuff
Definition: XrdSysIOEvents.hh:507
Definition: XrdSysPthread.hh:140
Mask to test for valid events.
Definition: XrdSysIOEvents.hh:92
Definition: XrdSysIOEvents.hh:78
char chStat
Definition: XrdSysIOEvents.hh:349
Definition: XrdSysIOEvents.hh:496
void UnLockChannel(Channel *cP)
Definition: XrdSysIOEvents.hh:448
pthread_t pollTid
Definition: XrdSysIOEvents.hh:491
int GetPollEnt(Channel *cP)
Definition: XrdSysIOEvents.hh:438
Read timeout.
Definition: XrdSysIOEvents.hh:89
~PipeData()
Definition: XrdSysIOEvents.hh:504
Definition: XrdSysPthread.hh:332
Definition: XrdSysIOEvents.hh:371
int chFD
Definition: XrdSysIOEvents.hh:340
EventType
Events that may cause a callback object to be activated.
Definition: XrdSysIOEvents.hh:86
Definition: XrdSysIOEvents.hh:329
char req
Definition: XrdSysIOEvents.hh:496
Writing won't block.
Definition: XrdSysIOEvents.hh:90
int chRTO
Definition: XrdSysIOEvents.hh:342
char inTOQ
Definition: XrdSysIOEvents.hh:351
Write timeout.
Definition: XrdSysIOEvents.hh:91
XrdSysSemaphore * theSem
Definition: XrdSysIOEvents.hh:497
Poller * chPollXQ
Definition: XrdSysIOEvents.hh:337
void Lock()
Definition: XrdSysPthread.hh:149
bool chDead
Definition: XrdSysIOEvents.hh:511
PipeData(char reQ=0, char evT=0, short enT=0, int fD=0, XrdSysSemaphore *sP=0)
Definition: XrdSysIOEvents.hh:500
XrdSysMutex toMutex
Definition: XrdSysIOEvents.hh:527
int chWTO
Definition: XrdSysIOEvents.hh:343
virtual bool Event(Channel *chP, void *cbArg, int evFlags)=0
static time_t maxTime
Definition: XrdSysIOEvents.hh:513
Definition: XrdSysIOEvents.hh:56
Definition: XrdSysIOEvents.hh:173
int pollEnt
Definition: XrdSysIOEvents.hh:341
XrdSysMutex adMutex
Definition: XrdSysIOEvents.hh:526
CallBack()
Constructor.
Definition: XrdSysIOEvents.hh:152
EventCode
Event bits used to feed Enable() and Disable(); can be or'd.
Definition: XrdSysIOEvents.hh:192
void UnLock()
Definition: XrdSysPthread.hh:151
void LockChannel(Channel *cP)
Definition: XrdSysIOEvents.hh:441
dlQ tmoList
Definition: XrdSysIOEvents.hh:334
CallBack * chCB
Definition: XrdSysIOEvents.hh:338
void * chCBA
Definition: XrdSysIOEvents.hh:339
PipeData reqBuff
Definition: XrdSysIOEvents.hh:506
int GetFault(Channel *cP)
Definition: XrdSysIOEvents.hh:437
int pipeBlen
Definition: XrdSysIOEvents.hh:508
time_t rdDL
Definition: XrdSysIOEvents.hh:344
CreateOpts
Definition: XrdSysIOEvents.hh:398
New data has arrived.
Definition: XrdSysIOEvents.hh:88
~Channel()
Destuctor is private, use Delete() to delete this object.
Definition: XrdSysIOEvents.hh:327