SNMP_PP_CHS Charpter 10 - 12

1.1.        32位计数器类

(当需要)用到SMI中的32位计数器时,SNMP++Counter32 Class为之带来了方便。SMI的计数器被定义成了一种存放无符号长整形的存储单元。为了成为无符号长整形,SMI counters被加工成了一种特殊的类型。因此SNMP++Counter32类具有无符号长整形的所有功能和属性,但同时又是一个独立的类。对无符号长整形的任何操作,拿到Counter32的对象上一样有效。Counter32 class与其他SNMP++的类,比如Vb class交互的时候,还可以有些额外的操作:在使用Vb class的时候,Counter32的对象可以被置入Vb对象(用Vb::set),也从Vb对象中取出(用Vb::get)。也即,对于SMI counter,开发者可以像对无符号长整形一样来操作,并且还提供了一对一的映射关系。

1.2.        Counter32 Class的成员函数列表

Counter32 Class Member Functions

Description

Constructors

 

     Counter32::Counter32( void);

构造一个空的Counter32对象

     Counter32::Counter32( const unsigned long i );

用一个无符号长整形来构造一个Counter32对象

     Counter32::Counter32(  const Counter32 &c);

用一个已有的Counter32对象来构造一个新的

Destructor

 

     Counter32::~Counter32( );

销毁一个TimeTicks对象

Overloaded Operators

 

     Counter32& operator = ( const Counter32& c);

重载赋值操作符

     char * get_printable();

格式化输出Counter32对象

     operator unsigned long( );

Counter32转换为无符号长整形

1.3.        一些Counter32 Class的例子

// Counter Examples

#include “counter.h”

void counter_example()

{

 

    Counter32 ctr;    // create an un-initialized counter instance

    Counter32 ctr1( (unsigned long) 57);           // create a counter using a number

    Counter32 ctr2(ctr1);    // create a counter using another instance

 

    ctr = 192;    // overloaded assignment to a number

    ctr1 = ctr;    // overloaded assignment to another counter

cout << (unsigned long) ctr;    // behave like an unsigned long int

 

};  // end counter example


2.         Gauge32 Class

SNMP++Gauge32 Class的对象模型(Object Modeling Technique)视图


2.1.        容量类

SNMP++Gauge32 Class为使用SMI中的timeticks带来了方便。SMI的容量被定义成了一种存放无符号长整形的存储单元。为了成为无符号长整形,SMI gauges被加工成了一种特殊的类型。因此SNMP++Gauge32类具有无符号长整形的所有功能和属性,但同时又是一个独立的类。对无符号长整形的任何操作,拿到Gauge32的对象上一样有效。Gauge32 class与其他SNMP++的类,比如Vb class交互的时候,还可以有些额外的操作:在使用Vb class的时候,TimeTicks的对象可以被置入Vb对象(用Vb::set),也从Vb对象中取出(用Vb::get)。也即,对于SMI gauge,开发者可以像对无符号长整形一样来操作,并且还提供了一对一的映射关系。

2.2.        Gauge32 Class的成员函数列表

Gauge32 Class Member Functions

Description

Constructors

 

     Gauge32::Gauge32( void);

构造一个空的Gauge32对象

     Gauge32::Gauge32( const unsigned long i );

用一个无符号长整形来构造一个Gauge32对象

     Gauge32::Gauge32(  const Gauge32 &g);

用一个已有的Gauge32对象来构造一个新的

Destructor

 

    Gauge32::Gauge32( );

销毁一个Gauge32对象

Overloaded Operators

 

    Gauge32& operator = ( const Gauge32 &g);

重载赋值操作符

    char * get_printable();

格式化输出Gauge32对象

    operator unsigned long( );

Gauge32转换为无符号长整形

2.3.        一些Gauge32的例子

// Gauge Examples

#include “gauge.h”

void gauge_example()

{

    Gauge32 gge ;    // create an un-initialized Gauge instance

    Gauge32gge1( (unsigned long) 57);            // create a Gauge using a number

    Gauge32 ctr2(ctr1);    // create a Gauge using another instance

 

    gge = 192;    // overloaded assignment to a number

    gge1 = gge;    // overloaded assignment to another counter

    cout << (unsigned long) gge;    // behave like an unsigned long int

   

};  // end gauge example


3.         Counter64 Class

SNMP++Counter64 Class的对象模型(Object Modeling Technique)视图


3.1.        64位计数器类

SNMP++64bit counter class实现了SMI64 bit counters64位计数器是在SNMPv2中定义的一种变量,所以在SNMPv1中并不存在这种MIB变量。64 bit counters由两个无符号长整形(一高位、一低位)组成,Counter64 class很好的实现了它。因为Counter64 class提供了加减乘除操作符的重载,所以它使用起来感觉很自然。

3.2.        Counter64 Class的成员函数列表

Counter64 Class Member Functions

Description

Constructors

 

     Counter64::Counter64( void);

构造一个空的Counter64对象

     Counter64::Counter64(const unsigned long hi, const unsigned long low );

用两个无符号长整形来构造一个Counter64对象

     Counter64::Counter64( const Counter64 &ctr64);

拷贝构造函数

     Counter64::Counter64( const unsigned long ul);

用一个无符号长整形来构造一个Counter64对象

Destructor

 

     Counter64::~Counter64( );

销毁一个Counter64对象

Overloaded Operators

 

     Counter64& operator = ( const Counter64 &ctr64);

将一个Counter64对象付给另一个

     Counter64& operator = ( const unsigned long i );

用一个无符号长整形设置Counter64对象的低位,同时清除了它的高位

     Counter64 operator + ( const Counter64 &ctr64);

两个Counter64对象相加

     Counter64 operator - ( const Counter64 &ctr64);

两个Counter64对象相减

     Counter64 operator * ( const Counter64 &ctr64);

两个Counter64对象相乘

     Counter64 operator / ( const Counter64 &ctr64);

两个Counter64对象相除

     int operator == ( Counter64 &lhs, Counter64 &rhs);

判断两个Counter64对象是否相等

     int operator != ( Counter64 &lhs, Counter64 &rhs);

判断两个Counter64对象是否不相等

     int operator < ( Counter64 &lhs, Counter64 &rhs);

判断一个Counter64是否比另一个小

     int operator <= ( Counter64 &lhs, Counter64 &rhs);

判断一个Counter64是否小于等于另一个

     int operator > ( Counter64 &lhs, Counter64 &rhs);

判断一个Counter64是否比另一个大

     int operator >= ( Counter64 &lhs, Counter64 &rhs);

判断一个Counter64是否大于等于另一个

Member Functions

 

     unsigned long high();

返回Counter64对象的高位

     unsigned long low();

返回Counter64对象的低位

     void set_high();

设置Counter64对象的高位

     void set_low();

设置Counter64对象的低位

3.3.        一些的Counter64 Class例子

// Counter64 examples

#include “ctr64.h”

void counter64_example()

{

   Counter 64 c 64;    // instantiate a 64 bit counter object with no parms

   Counter64 my_c64( 100, 100);    // instantiate a 64 bit counter with a hi and low value

   Counter64 your_c64( my_c64);   // instantiate a 64 counter using another 64bit counter

 

   cout << my_c64.high();               // print out the high portion of the c64

   cout << my_c64.low();                // print out the low portion of the c64

 

   c64 = my_c64 + your_c64;       // overloaded addition

   c64 = my_c64 * your_c64;        // overloaded multiplication

   c64 = my_c64 / your_c64;        // overloaded division

   c64 = my_c64 - your_c64;       // overloaded subtraction

 

    if ( c64 == my_c64)                // overloaded equivalence test

      cout << “c64 equals my_c64/n”;

 

    if ( c64 != my_c64)                  // overloaded not equal test

      cout << “c64 not equal to my_c64/n”;

 

   if ( c64 < my_c64)                   // overloaded less than

      cout << “c64 less than my_c64/n”;

 

}; // end Counter64 example


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值