SNMP的变量可分为两种,一种是标量(scalar variable),另一种是用表格组织的变量。
对象是一个定义,实际的应用需要把对象实例化,无论哪种变量都有对象实例。一个标量对象只有一个对象实例,标量的对象实例是通过在对象ID后加‘.0’来标识。
表格中的对象我们通常叫列对象,他的实例是一组用列对象标识符(OID)和行索引值(RowIndexValue)联合标识的实例,对象OID后面扩展index的值来标识对象实例
1. moscalar 继承此类,重写getValue()方法。实现标量的读写。
public static class NameScalar extends MOScalar<OctetString>{
public NameScalar(OID id, MOAccess access, OctetString value) {
super(id, access, new OctetString());
}
@Override
public OctetString getValue() {
OctetString str = null;
switch(getID().toString()){
case "1.3.6.1.4.1.5000.1.1.0":str = new OctetString("first");break;
case "1.3.6.1.4.1.5000.1.2.0":str = new OctetString("sencond");break;
}
return str;
}
}
2.创建表格
MOColumn[] moColumns = new MOColumn[] {
new DisplayString<OctetString>(0, MOAccessImpl.ACCESS_READ_WRITE, new OctetString("hello,lucy")),
new DisplayString<OctetString>(1, MOAccessImpl.ACCESS_READ_WRITE, new OctetString("hello,jack")),
new DisplayString<OctetString>(2, MOAccessImpl.ACCESS_READ_WRITE, new OctetString("hello,tom"))
};
table = new DefaultMOTable<DefaultMOMutableRow2PC, MOColumn, DefaultMOMutableTableModel<DefaultMOMutableRow2PC>>
(oidMyTable, tableIndex, moColumns);
tableModel = new DefaultMOMutableTableModel<DefaultMOMutableRow2PC>();
tableModel.setRowFactory(new DefaultMOMutableRow2PCFactory());
table.setModel(tableModel);
table.addNewRow(new OID("1"), new Variable[]{new OctetString("one"),new OctetString("one"),new OctetString("one")});
table.addNewRow(new OID("2"), new Variable[]{new OctetString("two"),new OctetString("two"),new OctetString("two")});