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

📄 fd_event_manager.h

📁 net_snmp应用程序示例
💻 H
字号:
/************************************************************************** * UNIT: File Descriptor (FD) Event Manager * * OVERVIEW: This unit contains functions to register a FD with the FD *           event manager for callbacks when activity is received on that *           FD.  Notification of read, write, and exception activity can  *           all be registered for individually.  Once a registered FD is *           closed by the user, the FD must be unregistered.  To use *           the FD Event manager you need to make calls to  *           netsnmp_external_event_info() and  *           netsnmp_dispatch_external_events() in your event loop to receive *           callbacks for registered events.  See snmpd.c and snmptrapd.c  *           for examples. * * LIMITATIONS: **************************************************************************/#ifndef FD_EVENT_MANAGER_H#define FD_EVENT_MANAGER_H#ifdef HAVE_SYS_SELECT_H#include <sys/select.h>#endif#ifdef __cplusplusextern          "C" {#endif#define NUM_EXTERNAL_FDS 32#define FD_REGISTERED_OK                 0#define FD_REGISTRATION_FAILED          -2#define FD_UNREGISTERED_OK               0#define FD_NO_SUCH_REGISTRATION         -1/* Since the inception of netsnmp_external_event_info and  * netsnmp_dispatch_external_events, there is no longer a need for the data  * below to be globally visible.  We will leave it global for now for  * compatibility purposes. */extern int      external_readfd[NUM_EXTERNAL_FDS],   external_readfdlen;extern int      external_writefd[NUM_EXTERNAL_FDS],  external_writefdlen;extern int      external_exceptfd[NUM_EXTERNAL_FDS], external_exceptfdlen;extern void     (*external_readfdfunc[NUM_EXTERNAL_FDS])   (int, void *);extern void     (*external_writefdfunc[NUM_EXTERNAL_FDS])  (int, void *);extern void     (*external_exceptfdfunc[NUM_EXTERNAL_FDS]) (int, void *);extern void    *external_readfd_data[NUM_EXTERNAL_FDS];extern void    *external_writefd_data[NUM_EXTERNAL_FDS];extern void    *external_exceptfd_data[NUM_EXTERNAL_FDS];/* Here are the key functions of this unit.  Use register_xfd to register * a callback to be called when there is x activity on the register fd.   * x can be read, write, or except (for exception).  When registering, * you can pass in a pointer to some data that you have allocated that * you would like to have back when the callback is called. */int             register_readfd(int, void (*func)(int, void *),   void *);int             register_writefd(int, void (*func)(int, void *),  void *);int             register_exceptfd(int, void (*func)(int, void *), void *);/* Unregisters a given fd for events */int             unregister_readfd(int);int             unregister_writefd(int);int             unregister_exceptfd(int);/* * External Event Info * * Description: *   Call this function to add an external event fds to your read, write,  *   exception fds that your application already has.  When this function *   returns, your fd_sets will be ready for select().  It returns the *   biggest fd in the fd_sets so far. * * Input Parameters: None * * Output Parameters: None * * In/Out Parameters:  *   numfds - The biggest fd so far.  On exit to this function, numfds *            could of changed since we pass out the new biggest fd. *   readfds - Set of read FDs that we are monitoring.  This function *             can modify this set to have more FDs that we are monitoring. *   writefds - Set of write FDs that we are monitoring.  This function *             can modify this set to have more FDs that we are monitoring. *   exceptfds - Set of exception FDs that we are monitoring.  This function *             can modify this set to have more FDs that we are monitoring. * * Return Value: None * * Side Effects: None */void netsnmp_external_event_info(int *numfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds);/* * Dispatch External Events * * Description: *   Call this function after select returns with pending events.  If any of *   them were NETSNMP external events, the registered callback will be called. *   The corresponding fd_set will have the FD cleared after the event is *   dispatched. * * Input Parameters: None * * Output Parameters: None * * In/Out Parameters:  *   count - Number of FDs that have activity.  In this function, we decrement *           count as we dispatch an event. *   readfds - Set of read FDs that have activity *   writefds - Set of write FDs that have activity *   exceptfds - Set of exception FDs that have activity  * * Return Value: None * * Side Effects: None */void netsnmp_dispatch_external_events(int *count, fd_set *readfds, fd_set *writefds, fd_set *exceptfds);#ifdef __cplusplus}#endif#endif

⌨️ 快捷键说明

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