📄 snmpoidtablesupport.java
字号:
/* * @(#)file SnmpOidTableSupport.java * @(#)author Sun Microsystems, Inc. * @(#)version 1.19 * @(#)date 08/07/21 * * Copyright 2006 Sun Microsystems, Inc. All rights reserved. * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. * */package com.sun.jmx.snmp;// java import//import java.util.Vector;import java.util.Enumeration;import java.util.Hashtable;//RI importimport com.sun.jmx.snmp.SnmpOidTable;import com.sun.jmx.snmp.SnmpOidRecord;import com.sun.jmx.snmp.SnmpStatusException;// SNMP Runtime import//import com.sun.jmx.trace.Trace;/** * Contains metadata definitions for MIB variables. * A name can be resolved against a table of MIB variables. * Each entry in the table is an <CODE>SnmpOidRecord</CODE> object that contains a name, a dot-separated OID string, * and the corresponding SMI type of the variable. * <P> * If you need to load a specific <CODE>SnmpOidTable</CODE>, just call the static method * {@link com.sun.jmx.snmp.SnmpOid#setSnmpOidTable <CODE>SnmpOid.setSnmpOidTable(<I>myOidTable</I>)</CODE>}. * <P> * <p><b>This API is a Sun Microsystems internal API and is subject * to change without notice.</b></p> * @see com.sun.jmx.snmp.SnmpOidRecord * * @version 1.19 11/17/05 * @author Sun Microsystems, Inc */public class SnmpOidTableSupport implements SnmpOidTable { /** * Creates an <CODE>SnmpOidTableSupport</CODE> with the specified name. * This name identifies the MIB to which belong the MIB variables contained * in this <CODE>SnmpOidTableSupport</CODE> object. * @param name The OID table name. */ public SnmpOidTableSupport(String name) { myName=name; } /** * Searches for a MIB variable given its logical name and returns an {@link com.sun.jmx.snmp.SnmpOidRecord} object * containing information on the variable. * * @param name The name of the MIB variable. * @return The <CODE>SnmpOidRecord</CODE> object containing information on the variable. * @exception SnmpStatusException If the variable is not found. */ public SnmpOidRecord resolveVarName(String name) throws SnmpStatusException { SnmpOidRecord var = (SnmpOidRecord)oidStore.get(name) ; if (var != null) { return var; } else { throw new SnmpStatusException("Variable name <" + name + "> not found in Oid repository") ; } } /** * Searches for a MIB variable given its OID and returns an {@link com.sun.jmx.snmp.SnmpOidRecord} object * containing information on the variable. * * @param oid The OID of the MIB variable. * @return The <CODE>SnmpOidRecord</CODE> object containing information on the variable. * @exception SnmpStatusException If the variable is not found. */ public SnmpOidRecord resolveVarOid(String oid) throws SnmpStatusException { // Try to see if the variable name is actually an OID to resolve. // int index = oid.indexOf('.') ; if (index < 0) { throw new SnmpStatusException("Variable oid <" + oid + "> not found in Oid repository") ; } if (index == 0) { // The oid starts with a '.' ala CMU. // oid= oid.substring(1, oid.length()); } // Go through the oidStore ... Good luck ! // for(Enumeration list= oidStore.elements(); list.hasMoreElements(); ) { SnmpOidRecord element= (SnmpOidRecord) list.nextElement(); if (element.getOid().equals(oid)) return element; } throw new SnmpStatusException("Variable oid <" + oid + "> not found in Oid repository") ; } /** * Returns a list that can be used to traverse all the entries in this <CODE>SnmpOidTable</CODE>. * @return A vector of {@link com.sun.jmx.snmp.SnmpOidRecord} objects. */ public Vector getAllEntries() { Vector elementsVector = new Vector(); // get the locally defined elements ... for (Enumeration e = oidStore.elements(); e.hasMoreElements(); ) { elementsVector.addElement(e.nextElement()); } return elementsVector ; } /** * Loads a list of variables into the storage area, * which is kept in memory. If you have new MIB variables, * this method can be called to load them. * @param mibs The list of variables to load. */ public synchronized void loadMib(SnmpOidRecord[] mibs) { try { for (int i = 0; ; i++) { SnmpOidRecord s = mibs[i] ; if (isTraceOn()) { trace("loadMib", "load " + s.getName()); } oidStore.put(s.getName(), s) ; } } catch (ArrayIndexOutOfBoundsException e) { } } /** * Checks if the specified <CODE>Object</CODE> is equal to this <CODE>SnmpOidTableSupport</CODE>. * @param object The <CODE>Object</CODE> to be compared. * @return <CODE>true</CODE> if <CODE>object</CODE> is an <CODE>SnmpOidTableSupport</CODE> instance and equals to this, * <CODE>false</CODE> otherwise. */ public boolean equals(Object object) { if (!(object instanceof SnmpOidTableSupport)) { return false; } SnmpOidTableSupport val = (SnmpOidTableSupport) object; return myName.equals(val.getName()); } /** * Returns the name identifying this <CODE>SnmpOidTableSupport</CODE> object. * @return The OID table name. */ public String getName() { return myName; } /* * ------------------------------------------ * PRIVATE METHODS * ------------------------------------------ */ // TRACES & DEBUG //--------------- boolean isTraceOn() { return Trace.isSelected(Trace.LEVEL_TRACE, Trace.INFO_SNMP); } void trace(String clz, String func, String info) { Trace.send(Trace.LEVEL_TRACE, Trace.INFO_SNMP, clz, func, info); } void trace(String func, String info) { trace(dbgTag, func, info); } boolean isDebugOn() { return Trace.isSelected(Trace.LEVEL_DEBUG, Trace.INFO_SNMP); } void debug(String clz, String func, String info) { Trace.send(Trace.LEVEL_DEBUG, Trace.INFO_SNMP, clz, func, info); } void debug(String func, String info) { debug(dbgTag, func, info); } String dbgTag = "SnmpOidTableSupport"; private Hashtable oidStore = new Hashtable() ; // storage area. private String myName;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -