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

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++ P D U . H
  15.   PDU CLASS DEFINITION
  16.   VERSION:
  17.   2.8
  18.   RCS INFO:
  19.   $Header: pdu.h,v 1.13 96/06/05 19:10:25 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.   Pdu class definition. Encapsulation of an SMI Protocol
  31.   Data Unit (PDU) in C++.
  32. =====================================================================*/
  33. #ifndef _PDU_CLS
  34. #define _PDU_CLS
  35. #define MAX_VBS 25
  36. #include "vb.h"       // include Vb class definition
  37. //=======================================================================
  38. //      Pdu Class
  39. //=======================================================================
  40. class DLLOPT Pdu {
  41. //-----------[ public member functions ]---------------------------------
  42. public:
  43.   // constructor no args
  44.   Pdu( void);
  45.   // constructor with vbs and count
  46.   Pdu( Vb* pvbs, const int pvb_count);
  47.   // constructor with another Pdu instance
  48.   Pdu( const Pdu &pdu);
  49.   // destructor
  50.   ~Pdu();
  51.   // assignment to another Pdu object overloaded
  52.   Pdu& operator=( const Pdu &pdu);
  53.   // append a vb to the pdu
  54.   Pdu& operator+=( Vb &vb);
  55.   // extract all Vbs from Pdu
  56.   int get_vblist( Vb* pvbs, const int pvb_count);
  57.   // deposit all Vbs to Pdu
  58.   int set_vblist( Vb* pvbs, const int pvb_count);
  59.   // get a particular vb
  60.   // where 0 is the first vb
  61.   int get_vb( Vb &vb, const int index) const;
  62.   // set a particular vb
  63.   // where 0 is the first vb
  64.   int set_vb( Vb &vb, const int index);
  65.   // return number of vbs
  66.   int get_vb_count() const;
  67.   // return the error status
  68.   int get_error_status();
  69.   // set the error status
  70.   DLLOPT friend void set_error_status( Pdu *pdu, const int status);
  71.   // return the error index
  72.   int get_error_index();
  73.   // set the error index
  74.   DLLOPT friend void set_error_index( Pdu *pdu, const int index);
  75.   // clear error status
  76.   DLLOPT friend void clear_error_status( Pdu *pdu);
  77.   // clear error index
  78.   DLLOPT friend void clear_error_index( Pdu *pdu);
  79.   // return the request id
  80.   unsigned long get_request_id();
  81.   // set the request id
  82.   DLLOPT friend void set_request_id( Pdu *pdu, const unsigned long rid);
  83.   // get the pdu type
  84.   unsigned short get_type();
  85.   // set the pdu type
  86.   void set_type( unsigned short type);
  87.   // returns validity of Pdu instance
  88.   int valid() const;
  89.   // trim off the last vb, if present
  90.   int trim(const int position=1);
  91.   // delete a Vb anywhere within the Pdu
  92.   int delete_vb( const int position);
  93.   // set notify timestamp
  94.   void set_notify_timestamp( const TimeTicks & timestamp);
  95.   // get notify timestamp
  96.   void get_notify_timestamp( TimeTicks & timestamp);
  97.   // set the notify id
  98.   void set_notify_id( const Oid id);
  99.   // get the notify id
  100.   void get_notify_id( Oid &id);
  101.   // set the notify enterprise
  102.   void set_notify_enterprise( const Oid &enterprise);
  103.   // get the notify enterprise
  104.   void get_notify_enterprise( Oid & enterprise);
  105.   //-------------[ protected instance variables ]--------------------------
  106.   protected:
  107.     Vb *vbs[MAX_VBS];          // pointer to array of Vbs
  108.     int vb_count;          // count of Vbs
  109.     int error_status;      // SMI error status
  110.     int error_index;      // SMI error index
  111.     int validity;          // valid boolean
  112.     unsigned long request_id;  // SMI request id
  113.     unsigned short pdu_type;  // derived at run time based
  114.                  // on request type
  115.     // for notify Pdu objects only
  116.     // traps & notifies
  117.     TimeTicks notify_timestamp;      // a timestamp associated with an infor
  118.     Oid notify_id;                   // an id 
  119.     Oid notify_enterprise;
  120. };
  121. #endif //_PDU_CLS