vb.h
上传用户:czjinwang
上传日期:2007-01-12
资源大小:2484k
文件大小:7k
源码类别:

SNMP编程

开发平台:

Visual C++

  1. /*===================================================================
  2.   Copyright (c) 1999
  3.   Hewlett-Packard Company
  4.   ATTENTION: USE OF THIS SOFTWARE IS SUBJECT TO THE FOLLOWING TERMS.
  5.   Permission to use, copy, modify, distribute and/or sell this software 
  6.   and/or its documentation is hereby granted without fee. User agrees 
  7.   to display the above copyright notice and this license notice in all 
  8.   copies of the software and any documentation of the software. User 
  9.   agrees to assume all liability for the use of the software; Hewlett-Packard 
  10.   makes no representations about the suitability of this software for any 
  11.   purpose. It is provided "AS-IS without warranty of any kind,either express 
  12.   or implied. User hereby grants a royalty-free license to any and all 
  13.   derivatives based upon this software code base. 
  14.   SNMP++ V B . H   
  15.      
  16.   VARIABLE BINDING CLASS DEFINITION
  17.        
  18.   VERSION 
  19.   2.8
  20.         
  21.   RCS INFO:
  22.   $Header: vb.h,v 1.12 96/09/11 14:01:41 hmgr Exp $         
  23.       
  24.   DESCRIPTION:
  25.   This module contains the class definition for the variable binding 
  26.   class. The VB class is an encapsulation of a SNMP VB. A VB object is 
  27.   composed of an SNMP++ Oid and an SMI value. The Vb class utilizes Oid
  28.   objects and thus requires the Oid class. The Vb class may be used
  29.   stand alone and does not require use of any other snmp library.
  30.         
  31.         
  32.   DESIGN:
  33.   Peter E. Mellquist  
  34.       
  35.   AUTHOR:
  36.   Peter E Mellquist
  37.         
  38.   LANGAUGE:
  39.   ANSI C++
  40.         
  41.   OPERATING SYSTEM:
  42.   MS-Windows Win32 
  43.   BSD UNIX
  44.         
  45. =====================================================================*/ 
  46.  
  47. #ifndef _VB_CLS
  48. #define _VB_CLS
  49.         
  50.         
  51. //----[ external C calls ]----------------------------------------------
  52. extern "C"
  53. {
  54. #include <memory.h>               // memcpy's
  55. #include <string.h>               // strlen, etc..
  56. #include "smival.h"
  57. #include "oid.h"                 // oid class def 
  58. #include "timetick.h"            // time ticks
  59. #include "counter.h"             // counter  
  60. #include "gauge.h"               // gauge class
  61. #include "ctr64.h"               // 64 bit counters
  62. #include "octet.h"               // octet class 
  63. #include "address.h"             // address class def
  64. #include "integer.h"             // integer class
  65. //------------[ VB Class Def ]-------------------------------------
  66. // The Vb class is the encapsulation of the SNMP variable binding.
  67. // Variable binding lists in SNMP++ are represented as arrays of
  68. // Vb objects. Vb objects are passed to and from SNMP objects to
  69. // provide getting or setting MIB values.
  70. // The vb class keeps its own memory for objects and does not 
  71. // utilize pointers to external data structures.
  72. //
  73. class DLLOPT Vb {
  74. //-----[ public members ]     
  75. public:
  76.   //-----[ constructors / destructors ]-------------------------------
  77.      
  78.   // constructor with no arguments  
  79.   // makes an vb, unitialized
  80.   Vb( void);
  81.     
  82.   // constructor to initialize the oid  
  83.   // makes a vb with oid portion initialized
  84.   Vb( const Oid &oid);
  85.              
  86.   // copy constructor
  87.   Vb( const Vb &vb);
  88.              
  89.   // destructor
  90.   // if the vb has a oid or an octect string then
  91.   // the associated memory needs to be freed
  92.   ~Vb();     
  93.   
  94.   // assignment to another Vb object overloaded
  95.   Vb& operator=( const Vb &vb);
  96.   //-----[ set oid / get oid ]------------------------------------------
  97.     
  98.    // set value oid only with another oid
  99.    void set_oid( const Oid oid);
  100.    
  101.    
  102.    // get oid portion
  103.    void get_oid( Oid &oid) const;
  104.    
  105.    //-----[ set value ]--------------------------------------------------
  106.    
  107.    // sets from a general value
  108.    void set_value( const SnmpSyntax &val);
  109.                                                         
  110.    // set the value with an int 
  111.    // C++ int maps to SMI int      
  112.    void set_value( const int i);
  113.                                                         
  114.    // set the value with a long signed int
  115.    // C++ long int maps to SMI int 32                                                       
  116.    void set_value( const long int i);
  117.     
  118.    // set the value with an unsigned long int
  119.    // C++ unsigned long int maps to SMI UINT32
  120.    void set_value( const unsigned long int i);
  121.    // set value on a string
  122.    // makes the string an octet
  123.    // this must be a null terminates string 
  124.    // maps to SMI octet
  125.    void set_value( const char *ptr); 
  126.    // set a Vb null, if its not already
  127.    void set_null();
  128.                                                         
  129.    //----[ get value ]------------------------------------------------
  130.    
  131.    // gets a general value
  132.    int get_value( SnmpSyntax &val);
  133.                                                         
  134.    // get value int
  135.    // returns 0 on success and value
  136.    int get_value( int &i);
  137.    // get the signed long int
  138.    // returns 0 on success and a value  
  139.    int get_value( long int &i);
  140.  
  141.    // get the unsigned long int
  142.    // returns 0 on success and a value
  143.    int get_value( unsigned long int &i);
  144.           
  145.                        
  146.    // get a unsigned char string value
  147.    // destructive, copies into given ptr 
  148.    // also returnd is the len length 
  149.    // 
  150.    // Note! the caller must provide a target string big
  151.    // enough to handle the vb string
  152.    int get_value( unsigned char *ptr, unsigned long &len); 
  153.    // get an unsigned char array
  154.    // caller specifies max len of target space   
  155.    int get_value( unsigned char *ptr,  // pointer to target space
  156.                   unsigned long &len,          // returned len
  157.                   unsigned long maxlen);       // max len of target space
  158.     
  159.    // get a char * from an octet string
  160.    // the user must provide space or
  161.    // memory will be stepped on
  162.    int get_value( char *ptr); 
  163.    //-----[ misc]--------------------------------------------------------
  164.    // return the current syntax 
  165.    // Or.. if a V2 VB exception is present then return the exception value
  166.    SmiUINT32 get_syntax();
  167.    // set the exception status
  168.    DLLOPT friend void set_exception_status( Vb *vb, const SmiUINT32 status);
  169.    
  170.    // returns a formatted version of the value
  171.    char *get_printable_value();
  172.   
  173.    // returns a formatted version of the value
  174.    char *get_printable_oid();
  175.    // return validity of Vb object
  176.    int valid() const;
  177. //-----[ protected members ]
  178. protected:
  179.   Oid iv_vb_oid;               // a vb is made up of a oid 
  180.   SnmpSyntax *iv_vb_value;     // and a value...
  181.   SmiUINT32 exception_status;  // are there any vb exceptions??
  182.                  
  183.   // free up any mem used               
  184.   void free_vb();
  185.     
  186. };
  187. #endif