⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 select.h

📁 This Source-Navigator, an IDE for C/C++/Fortran/Java/Tcl/PHP/Python and a host of other languages.
💻 H
字号:
// $Header: /cvsroot/sourcenav/src/snavigator/demo/c++_demo/glish/Select.h,v 1.1.1.1 2002/04/18 23:35:25 mdejong Exp $#ifndef select_h#define select_h#include "system.h"#include <sys/time.h>#include "Glish/List.h"#if HAVE_SYS_SELECT_H#include <sys/select.h>#endifclass SelectTimer;declare(PList,SelectTimer);typedef PList(SelectTimer) timer_list;struct fd_set;class Selectee {public:	Selectee( int selectee_fd )	{ fd = selectee_fd; }	virtual ~Selectee();	int FD()	{ return fd; }	// returns non-zero if the selection should stop, zero otherwise	virtual int NotifyOfSelection()	{ return 0; }protected:	int fd;	};class SelectTimer {public:	// Creates a timer that expires "delta" seconds from now.	// If "interval" is non-zero then after expiring the timer	// will reset to expire after that many more seconds.	SelectTimer( struct timeval* delta, struct timeval* interval = 0 );	SelectTimer( long delta_sec, long delta_usec,			long interval_sec = 0, long interval_usec = 0 );	virtual ~SelectTimer();	// Returns the timer's absolute expiration time.	struct timeval ExpirationTime()			{ return exp_t; }protected:	friend class Selector;	void Init( struct timeval* delta, struct timeval* interval );	// Called by a Selector to indicate that the timer has expired.	// Returns non-zero if the timer has reactivated itself, zero	// if it is now inactive.	int Expired();	// Called to do whatever work is associated with the timer expiring.	// Returns non-zero if the timer should reactive (ignored if the	// interval value is itself zero), zero if the timer should become	// inactive.	virtual int DoExpiration();	struct timeval exp_t;	struct timeval interval_t;	};class Selector {public:	Selector();	~Selector();	void AddSelectee( Selectee* s );	void DeleteSelectee( int selectee_fd );	// Returns the Selectee associated with the given fd, or, if	// none, returns 0.	Selectee* FindSelectee( int selectee_fd ) const;	void AddTimer( SelectTimer* t );	// If selection stops early due to non-zero return from Selectee's	// NotifyOfSelection(), returns that non-zero value.  Otherwise	// returns 0.	int DoSelection();protected:	int max_num_fds;	Selectee** selectees;	// array indexed by fd	Selectee* current_selectee;	// current selectee being notified	// If true, delete selectee when notification done.	int nuke_current_selectee;	struct fd_set* fdset;	timer_list timers;	};#endif	/* select_h */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -