cache_handler.h
上传用户:wxp200602
上传日期:2007-10-30
资源大小:4028k
文件大小:4k
源码类别:

SNMP编程

开发平台:

Unix_Linux

  1. #ifndef NETSNMP_CACHE_HANDLER_H
  2. #define NETSNMP_CACHE_HANDLER_H
  3. /*
  4.  * This caching helper provides a generalised (SNMP-manageable) caching
  5.  * mechanism.  Individual SNMP table and scalar/scalar group MIB
  6.  * implementations can use data caching in a consistent manner, without
  7.  * needing to handle the generic caching details themselves.
  8.  */
  9. #include <net-snmp/library/tools.h>
  10. #ifdef __cplusplus
  11. extern          "C" {
  12. #endif
  13. #define CACHE_NAME "cache_info"
  14.     typedef struct netsnmp_cache_s netsnmp_cache;
  15.     typedef int  (NetsnmpCacheLoad)(netsnmp_cache *, void*);
  16.     typedef void (NetsnmpCacheFree)(netsnmp_cache *, void*);
  17.     struct netsnmp_cache_s {
  18.         /*
  19.  * For operation of the data caches
  20.  */
  21.         int      flags;
  22.         int      enabled;
  23.         int      valid;
  24.         char     expired;
  25.         int      timeout; /* Length of time the cache is valid (in s) */
  26.         marker_t timestamp; /* When the cache was last loaded */
  27.         u_long   timer_id;      /* periodic timer id */
  28.         NetsnmpCacheLoad *load_cache;
  29.         NetsnmpCacheFree *free_cache;
  30.        /*
  31.         * void pointer for the user that created the cache.
  32.         * You never know when it might not come in useful ....
  33.         */
  34.         void             *magic;
  35.        /*
  36.         * hint from the cache helper. contains the standard
  37.         * handler arguments.
  38.         */
  39.        netsnmp_handler_args          *cache_hint;
  40.         /*
  41.  * For SNMP-management of the data caches
  42.  */
  43. netsnmp_cache *next, *prev;
  44.         oid *rootoid;
  45.         int  rootoid_len;
  46.     };
  47.     void netsnmp_cache_reqinfo_insert(netsnmp_cache* cache,
  48.                                       netsnmp_agent_request_info * reqinfo,
  49.                                       const char *name);
  50.     netsnmp_cache  *
  51.        netsnmp_cache_reqinfo_extract(netsnmp_agent_request_info * reqinfo,
  52.                                      const char *name);
  53.     netsnmp_cache* netsnmp_extract_cache_info(netsnmp_agent_request_info *);
  54.     int            netsnmp_cache_check_and_reload(netsnmp_cache * cache);
  55.     int            netsnmp_cache_check_expired(netsnmp_cache *cache);
  56.     int            netsnmp_cache_is_valid(    netsnmp_agent_request_info *,
  57.                                               const char *name);
  58.     /** for backwards compat */
  59.     int            netsnmp_is_cache_valid(    netsnmp_agent_request_info *);
  60.     netsnmp_mib_handler *netsnmp_get_cache_handler(int, NetsnmpCacheLoad *,
  61.                                                         NetsnmpCacheFree *,
  62.                                                         oid*, int);
  63.     int   netsnmp_register_cache_handler(netsnmp_handler_registration *reginfo,
  64.                                          int, NetsnmpCacheLoad *,
  65.                                               NetsnmpCacheFree *);
  66.     Netsnmp_Node_Handler netsnmp_cache_helper_handler;
  67.     netsnmp_cache *
  68.     netsnmp_cache_create(int timeout, NetsnmpCacheLoad * load_hook,
  69.                          NetsnmpCacheFree * free_hook,
  70.                          oid * rootoid, int rootoid_len);
  71.     netsnmp_mib_handler *
  72.     netsnmp_cache_handler_get(netsnmp_cache* cache);
  73.     netsnmp_cache * netsnmp_cache_find_by_oid(oid * rootoid,
  74.                                               int rootoid_len);
  75.     unsigned int netsnmp_cache_timer_start(netsnmp_cache *cache);
  76.     void netsnmp_cache_timer_stop(netsnmp_cache *cache);
  77. /*
  78.  * Flags affecting cache handler operation
  79.  */
  80. #define NETSNMP_CACHE_DONT_INVALIDATE_ON_SET                0x0001
  81. #define NETSNMP_CACHE_DONT_FREE_BEFORE_LOAD                 0x0002
  82. #define NETSNMP_CACHE_DONT_FREE_EXPIRED                     0x0004
  83. #define NETSNMP_CACHE_DONT_AUTO_RELEASE                     0x0008
  84. #define NETSNMP_CACHE_PRELOAD                               0x0010
  85. #define NETSNMP_CACHE_AUTO_RELOAD                           0x0020
  86. #define NETSNMP_CACHE_HINT_HANDLER_ARGS                     0x1000
  87. #ifdef __cplusplus
  88. }
  89. #endif
  90. #endif /* NETSNMP_CACHE_HANDLER_H */