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

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++ O I D. H
  15.   OID CLASS DEFINITION
  16.   VERSION:
  17.   2.8
  18.   RCS INFO:
  19.   $Header: oid.h,v 1.28 96/09/11 14:01:32 hmgr Exp $
  20.   DESIGN:
  21.   Peter E Mellquist
  22.   AUTHOR:
  23.   Peter E Mellquist
  24.   LANGUAGE:
  25.   ANSI C++
  26.   OPERATING SYSTEMS:
  27.   MS-Windows Win32
  28.   BSD UNIX
  29.   DESCRIPTION:
  30.   This class is fully contained and does not rely on or any other
  31.   SNMP libraries. This class is portable across any platform
  32.   which supports C++.
  33. =====================================================================*/
  34. #ifndef _OID_CLS
  35. #define _OID_CLS
  36. //------------------------------------------------------------------------
  37. //----------[ extern C libraries Needed ]---------------------------------
  38. extern "C"
  39. {
  40. #include <memory.h>               // memcpy's
  41. #include <string.h>               // strlen, etc..
  42. }
  43. #include "smival.h"                // derived class for all values
  44. #include "collect.h"
  45. //-----------------------------------------------------------------------
  46. //------------[ SNMP++ OID CLASS DEF  ]----------------------------------
  47. //-----------------------------------------------------------------------
  48. class DLLOPT Oid: public  SnmpSyntax {
  49. public:
  50.   // constructor using no arguments
  51.   // initialize octet ptr and string
  52.   // ptr to null
  53.   Oid( void);
  54.   // constructor using a dotted string
  55.   Oid( const char * dotted_oid_string);
  56.   // constructor using another oid object
  57.   Oid ( const Oid &oid);
  58.   // constructor from raw form
  59.   Oid(const unsigned long *raw_oid, int oid_len);
  60.   // destructor
  61.   ~Oid();
  62.   // syntax type
  63.   SmiUINT32 get_syntax();
  64.   // assignment to a string operator overloaded
  65.   Oid& operator=( const char *dotted_oid_string);
  66.   // assignment to another oid object overloaded
  67.   Oid& operator=( const Oid &oid);
  68.   // equal operator overloaded
  69.   DLLOPT friend int operator==( const Oid &lhs,const Oid &rhs);
  70.   // not equal operator overloaded
  71.   DLLOPT friend int operator!=( const Oid &lhs,const Oid &rhs);
  72.   // less than < overloaded
  73.   DLLOPT friend int operator<( const Oid &lhs,const Oid &rhs);
  74.   // less than <= overloaded
  75.   DLLOPT friend int operator<=( const Oid &lhs,const Oid &rhs);
  76.   // greater than > overloaded
  77.   DLLOPT friend int operator>( const Oid &lhs,const Oid &rhs);
  78.   // greater than >= overloaded
  79.   DLLOPT friend int operator>=( const Oid &lhs,const Oid &rhs);
  80.   // equal operator overloaded
  81.   DLLOPT friend int operator==( const Oid &lhs,const char *rhs);
  82.   // not equal operator overloaded
  83.   DLLOPT friend int operator!=( const Oid &lhs,const char *rhs);
  84.   // less than < operator overloaded
  85.   DLLOPT friend int operator<( const Oid &lhs,const char *rhs);
  86.   // less than <= operator overloaded
  87.   DLLOPT friend int operator<=( const Oid &lhs,char *rhs);
  88.   // greater than > operator overloaded
  89.   DLLOPT friend int operator>( const Oid &lhs,const char *rhs);
  90.   // greater than >= operator overloaded
  91.   DLLOPT friend int operator>=( const Oid &lhs,const char *rhs);
  92.   // append operator, appends a string
  93.   Oid& operator+=( const char *a);
  94.   // appends an int
  95.   Oid& operator+=( const unsigned long i);
  96.   // appends an Oid
  97.   Oid& operator+=( const Oid &o);
  98.   // allows element access
  99.   unsigned long & operator[]( int position);
  100.   
  101.   // return the WinSnmp oid part
  102.   SmiLPOID oidval();
  103.   // reset the data from raw form
  104.   void set_data( const unsigned long *raw_oid,
  105.                  const unsigned int oid_len);
  106.  
  107.   // return the len of the oid
  108.   unsigned long len() const;
  109.   // trim off the n rightmost values of an oid
  110.   void trim( const unsigned long n=1);
  111.   // compare the n leftmost bytes (left-to-right)
  112.   // returns 0, equal
  113.   // returns -1, <
  114.   // returns 1 , >
  115.   int nCompare( const unsigned long n, const Oid &o) const; 
  116.   
  117.   // compare the n rightmost bytes (right-to-left)
  118.   // returns 0, equal
  119.   // returns -1, <
  120.   // returns 1 , >
  121.   int RnCompare( const unsigned long n, const Oid &o) const; 
  122.   
  123.   // is the Oid object valid
  124.   // returns validity
  125.   int valid() const;
  126.   // get a printable ASCII value
  127.   char * get_printable();
  128.   // get printable 
  129.   // return dotted string value from the right
  130.   // where the user specifies how many positions to print
  131.   //
  132.   char * get_printable( const unsigned long n);
  133.   // return a dotted string starting at start,
  134.   // going n positions to the left
  135.   // NOTE, start is 1 based ( the first id is at position #1)
  136.   char * get_printable( const unsigned long start, const unsigned long n);
  137.   // create a new instance of this Value
  138.   SnmpSyntax *clone() const;
  139.   // copy an instance of this Value
  140.   SnmpSyntax& operator=( SnmpSyntax &val);
  141. protected:
  142.   //----[ instance variables ]
  143.  
  144.   char *iv_str;             // used for returning oid string
  145.   //----[ protected member functions ]
  146.   // convert a string to an smi oid
  147.   int StrToOid( const char *string,  // input string
  148.                     SmiLPOID dstOid);           // destination oid
  149.   // clone an smi oid
  150.   int OidCopy(  SmiLPOID srcOid,            // source oid
  151.                     SmiLPOID dstOid);           // destination oid
  152.   // convert an smi oid to its string representation
  153.   int OidToStr(SmiLPOID srcOid,             // source oid
  154.                    SmiUINT32 size,              // size of string
  155.                    char *string);        // pointer to string
  156. };
  157. //-----------[ End Oid Class ]-------------------------------------
  158. // create OidCollection type
  159. typedef SnmpCollection <Oid> OidCollection;
  160. #endif //_OID_CLS