#ifndef __Select_h #define __Select_h #ifdef __GNUG__ #pragma interface #endif class ostream; class SelectPoll { friend class SelectEvent; SelectPoll *next; SelectEvent *head; int fd; public: SelectPoll(SelectEvent *p) { head = p; fd = -1; } void disarm(); void arm(int f); virtual ~SelectPoll() { disarm(); } virtual void handler() = 0; static int getevent(unsigned); static int poll(unsigned); static SelectEvent SelectRead, SelectWrite, SelectStat; }; class SelectEvent { friend int SelectPoll::poll(unsigned); bool modified; short setsize; void *fds; // really fd_set, but we don't want to require select.h here SelectPoll *q; void setall(); public: SelectEvent(int = 256); ~SelectEvent(); void handler(); int tst(int i) const; void set(int i); void clr(int i); void add(SelectPoll &r); void del(SelectPoll &r); void printon(ostream &); }; #endif