fdset.h
上传用户:gzpyjq
上传日期:2013-01-31
资源大小:1852k
文件大小:2k
源码类别:

手机WAP编程

开发平台:

WINDOWS

  1. /*
  2.  * fdset.h - module for managing a large collection of file descriptors
  3.  */
  4. typedef struct FDSet FDSet;
  5. /*
  6.  * A function of this type will be called to indicate that a file descriptor
  7.  * has shown activity.  The revents parameter is in the same format as
  8.  * returned by poll().  The data pointer was supplied by the caller who
  9.  * registered the fd with us in the first place.
  10.  * NOTE: Beware of concurrency issues.  The callback function will run
  11.  * in the fdset's private thread, not in the caller's thread.
  12.  * This also means that if the callback does a lot of work it will slow
  13.  * down the polling process.  This may be good or bad.
  14.  */
  15. typedef void fdset_callback_t(int fd, int revents, void *data);
  16. /*
  17.  * Create a new, empty file descriptor set and start its thread.
  18.  */
  19. FDSet *fdset_create(void);
  20. /*
  21.  * Destroy a file descriptor set.  Will emit a warning if any file
  22.  * descriptors are still registered with it.
  23.  */
  24. void fdset_destroy(FDSet *set);
  25. /* 
  26.  * Register a file descriptor with this set, and listen for the specified
  27.  * events (see fdset_listen() for details on that).  Record the callback
  28.  * function which will be used to notify the caller about events.
  29.  */
  30. void fdset_register(FDSet *set, int fd, int events,
  31.                     fdset_callback_t callback, void *data);
  32. /*
  33.  * Change the set of events to listen for for this file descriptor.
  34.  * Events is in the same format as the events field in poll() -- in
  35.  * practice, use POLLIN for "input available", POLLOUT for "ready to
  36.  * accept more output", and POLLIN|POLLOUT for both.
  37.  *
  38.  * The mask field indicates which event flags can be affected.  For
  39.  * example, if events is POLLIN and mask is POLLIN, then the POLLOUT
  40.  * setting will not be changed by this.  If mask were POLLIN|POLLOUT,
  41.  * then the POLLOUT setting would be turned off.
  42.  *
  43.  * The fd must first have been registered.  Locks are used to
  44.  * guarantee that the callback function will not be called for
  45.  * the old events after this function returns.
  46.  */
  47. void fdset_listen(FDSet *set, int fd, int mask, int events);
  48. /*
  49.  * Forget about this fd.  Locks are used to guarantee that the callback
  50.  * function will not be called for this fd after this function returns.
  51.  */
  52. void fdset_unregister(FDSet *set, int fd);