33 #include "XrdSys/XrdSysPthread.hh"
35 #define XRD_NUMPOLLERS 3
41 class XrdSysSemaphore;
49 static int Attach(XrdLink *lp);
53 static void Detach(XrdLink *lp);
57 virtual void Disable(XrdLink *lp,
const char *etxt=0) = 0;
61 virtual int Enable(XrdLink *lp) = 0;
65 static int Finish(XrdLink *lp,
const char *etxt=0);
69 static void Init(XrdSysError *eP, XrdOucTrace *tP, XrdScheduler *sP)
70 {XrdLog = eP; XrdTrace = tP; XrdSched = sP;}
74 static char *Poll2Text(
short events);
78 static int Setup(
int numfd);
82 virtual void Start(XrdSysSemaphore *syncp,
int &rc) = 0;
86 static int Stats(
char *buff,
int blen,
int do_sync=0);
95 static XrdPoll *Pollers[XRD_NUMPOLLERS];
102 static const char *TraceID;
103 static XrdOucTrace *XrdTrace;
104 static XrdSysError *XrdLog;
105 static XrdScheduler *XrdSched;
113 virtual void Exclude(XrdLink *lp) = 0;
117 virtual int Include(XrdLink *lp) = 0;
122 static XrdPoll *newPoller(
int pollid,
int numfd) ;
126 XrdSysMutex PollPipe;
127 struct pollfd PipePoll;
130 struct PipeData {
union {XrdSysSemaphore *theSem;
134 enum cmd {EnFD, DiFD, RmFD, Post};
149 static XrdSysMutex doingAttach;