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实现了SMI的64 bit counters。64位计数器是在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