- /*
- * @(#)file SnmpVarBind.java
- * @(#)author Sun Microsystems, Inc.
- * @(#)version 4.12
- * @(#)date 04/09/15
- *
- * Copyright 2004 Sun Microsystems, Inc. All rights reserved.
- * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
- *
- */
- // Copyright (c) 1995-96 by Cisco Systems, Inc.
-
- package com.sun.jmx.snmp;
-
- // java imports
- //
- import java.io.Serializable;
-
-
- /**
- * This class holds information for a MIB variable contained in an {@link com.sun.jmx.snmp.SnmpVarBindList}.
- * An <CODE>SnmpVarBind</CODE> consists of three parts:<P>
- * <DL>
- * <DD>- The corresponding OID object for the MIB variable.
- * <DD>- The value part associated with that OID instance.
- * If present, it determines the MIB syntax for the object.
- * <DD>- The status of the <CODE>SnmpVarBind</CODE> which specifies whether the agent responded with an
- * exception condition for this variable such as <CODE>noSuchInstance</CODE>, <CODE>endOfMibView</CODE>,
- * or <CODE>noSuchObject</CODE>.
- * </DL>
- * <p><b>This API is a Sun Microsystems internal API and is subject
- * to change without notice.</b></p>
- */
-
- public class SnmpVarBind implements SnmpDataTypeEnums, Cloneable, Serializable {
-
- // PUBLIC VARIABLES
- //-----------------
-
- /**
- * Keeps the legend for the value part of the <CODE>SnmpVarBind</CODE>.
- */
- static final public String statusLegend[] = { "Status Mapper", "Value not initialized",
- "Valid Value", "No such object",
- "No such Instance", "End of Mib View" } ;
-
- /**
- * Useful constant indicating that the status of the <CODE>SnmpVarBind</CODE> object is not initialized.
- */
- static final public int stValueUnspecified = 1 ;
-
- /**
- * Useful constant indicating that the status of the <CODE>SnmpVarBind</CODE> object is valid.
- */
- static final public int stValueOk = 2 ;
-
- /**
- * Useful constant indicating that the status of the <CODE>SnmpVarBind</CODE> object is <CODE>noSuchObject</CODE>.
- * Status of <CODE>SnmpVarBind</CODE> as returned by the SNMPv2 agent.
- */
- static final public int stValueNoSuchObject = 3 ;
-
- /**
- * Useful constant indicating that the status of the <CODE>SnmpVarBind</CODE> object is
- * <CODE>noSuchInstance</CODE>.
- * Status of <CODE>SnmpVarBind</CODE> as returned by the SNMPv2 agent.
- * In the SNMPv1 context, this is appropriate when <CODE>noSuchName</CODE> is returned in response to the
- * <CODE>SnmpGet</CODE> request.
- */
- static final public int stValueNoSuchInstance = 4 ;
-
- /**
- * Useful constant indicating that the status of the <CODE>SnmpVarBind</CODE> object is <CODE>endOfMibView</CODE>.
- * Status of <CODE>SnmpVarBind</CODE> as returned by the SNMPv2 agent.
- * In the SNMPv1 context, this is appropriate when <CODE>noSuchName</CODE> is returned in response to the
- * <CODE>SnmpGetNext</CODE> request.
- */
- static final public int stValueEndOfMibView = 5 ;
-
-
- //
- // These are predefined values for SNMP V2 variables
- //
- /**
- * Error code value as defined in RFC 1448 for: <CODE>noSuchObject</CODE>.
- */
- public final static SnmpNull noSuchObject = new SnmpNull(errNoSuchObjectTag) ;
-
- /**
- * Error code value as defined in RFC 1448 for: <CODE>noSuchInstance</CODE>.
- */
- public final static SnmpNull noSuchInstance = new SnmpNull(errNoSuchInstanceTag) ;
-
- /**
- * Error code value as defined in RFC 1448 for: <CODE>endOfMibView</CODE>.
- */
- public final static SnmpNull endOfMibView = new SnmpNull(errEndOfMibViewTag) ;
-
- /**
- * The OID of the <CODE>SnmpVarBind</CODE>.
- * The default value is null.
- * <p><b>Reserved for internal use:<b><br>
- * As of Java Dynamic Management Kit 5.0, use instead <CODE>getOid</CODE> and <CODE>setOid</CODE></p>
- */
- public SnmpOid oid = null ;
-
- /**
- * The value of the <CODE>SnmpVarBind</CODE>.
- * The default value is null.
- * <p><b>Reserved for internal use:<b><br>
- * As of Java Dynamic Management Kit 5.0, use instead <CODE>getSnmpValue</CODE> and <CODE>setSnmpValue</CODE></p>
- */
- public SnmpValue value = null ;
-
- /**
- * Indicates the status of the value in this <CODE>SnmpVarBind</CODE>.
- * The default value is <CODE>stValueUnspecified</CODE>.
- * This attribute is updated internally and should not be changed otherwise.
- */
- public int status = stValueUnspecified ;
-
-
- // CONSTRUCTORS
- //-------------
-
- /**
- * Default constructor.
- */
- public SnmpVarBind() {
- }
-
- /**
- * Constructs a new <CODE>SnmpVarBind</CODE> object from the specified <CODE>SnmpOid</CODE> value.
- * @param oid The OID part of the <CODE>SnmpVarBind</CODE>.
- */
- public SnmpVarBind(SnmpOid oid) {
- this.oid = oid ;
- }
-
- /**
- * Constructs a new <CODE>SnmpVarBind</CODE> object from the specified <CODE>SnmpOid</CODE> and
- * <CODE>SnmpValue</CODE>.
- * @param oid The OID part of the <CODE>SnmpVarBind</CODE>.
- * @param val The value part of the <CODE>SnmpVarBind</CODE>.
- */
- public SnmpVarBind(SnmpOid oid, SnmpValue val) {
- this.oid = oid ;
- this.setSnmpValue(val) ;
- }
-
- /**
- * Constructs a new <CODE>SnmpVarBind</CODE> object from the specified <CODE>String</CODE> value.
- * If the name is a MIB variable, it resolves the name with the MIB database.
- * @param name The MIB variable name or a dot-formatted OID <CODE>String</CODE>.
- * @exception SnmpStatusException An error occurred while resolving the MIB variable name.
- */
- public SnmpVarBind(String name) throws SnmpStatusException {
-
- if (name.startsWith(".")) {
- this.oid = new SnmpOid(name) ;
- } else {
- SnmpOidRecord record= null;
- try {
- int index = name.indexOf('.') ;
- handleLong(name, index);
- this.oid = new SnmpOid(name);
- }
- catch(NumberFormatException e) {
- int index = name.indexOf('.') ;
- if (index <= 0) {
- record = resolveVarName(name) ;
- this.oid = new SnmpOid(record.getName()) ;
- } else {
- record = resolveVarName(name.substring(0, index)) ;
- this.oid = new SnmpOid(record.getName() + name.substring(index)) ;
- }
- }
- }
- }
-
-
- // GETTER/SETTER
- //--------------
-
- /**
- * Returns the complete OID part associated with this <CODE>SnmpVarBind</CODE>.
- * @return The <CODE>SnmpOid</CODE> for this variable.
- */
- final public SnmpOid getOid() {
- return this.oid ;
- }
-
- /**
- * Sets the <CODE>SnmpOid</CODE> part associated with this <CODE>SnmpVarBind</CODE> with the specified OID.
- * The value part of this <CODE>SnmpVarBind</CODE> will automatically be nulled.
- * @param oid The new OID.
- */
- final public void setOid(SnmpOid oid) {
- this.oid = oid ;
- clearValue() ;
- }
-
- /**
- * Returns the value part associated with this <CODE>SnmpVarBind</CODE>.
- * @return The <CODE>SnmpValue</CODE> for this variable.
- */
- final synchronized public SnmpValue getSnmpValue() {
- return this.value ;
- }
-
- /**
- * Sets the <CODE>SnmpValue</CODE> part associated with this <CODE>SnmpVarBind</CODE> with the specified value.
- * The status is updated to indicate that the value is valid.
- * @param val The new value.
- */
- final public void setSnmpValue(SnmpValue val) {
- this.value= val ;
- setValueValid();
- }
-
- /**
- * Returns the value part associated with this <CODE>SnmpVarBind</CODE>.
- * @return The <CODE>SnmpCounter64</CODE> value for this variable.
- * @exception ClassCastException An attempt has been made to cast an object to a subclass of which
- * it is not an instance.
- */
- final public SnmpCounter64 getSnmpCounter64Value() throws ClassCastException {
- return (SnmpCounter64)this.value ;
- }
-
- /**
- * Sets the <CODE>SnmpCounter64</CODE> value part associated with this <CODE>SnmpVarBind</CODE>
- * with the specified counter 64 value.
- * The status is updated to indicate that the value is valid.
- * @param val The new counter 64 value.
- * @exception IllegalArgumentException The specified value is negative or larger than <CODE>Long.MAX_VALUE</CODE>.
- * @see SnmpCounter64
- */
- final public void setSnmpCounter64Value(long val) throws IllegalArgumentException {
- clearValue() ;
- this.value = new SnmpCounter64(val) ;
- setValueValid() ;
- }
-
- /**
- * Returns the value part associated with this <CODE>SnmpVarBind</CODE>.
- * @return The <CODE>SnmpInt</CODE> value for this variable.
- * @exception ClassCastException An attempt has been made to cast an object to a subclass of which
- * it is not an instance.
- */
- final public SnmpInt getSnmpIntValue() throws ClassCastException {
- return (SnmpInt)this.value ;
- }
-
- /**
- * Sets the <CODE>SnmpInt</CODE> value part associated with this <CODE>SnmpVarBind</CODE>
- * with the specified integer value.
- * The status is updated to indicate that the value is valid.
- * @param val The new integer value.
- * @exception IllegalArgumentException The specified value is smaller than <CODE>Integer.MIN_VALUE</CODE>
- * or larger than <CODE>Integer.MAX_VALUE</CODE>.
- * @see SnmpInt
- */
- final public void setSnmpIntValue(long val) throws IllegalArgumentException {
- clearValue() ;
- this.value = new SnmpInt(val) ;
- setValueValid() ;
- }
-
- /**
- * Returns the value part associated with this <CODE>SnmpVarBind</CODE>.
- * @return The <CODE>SnmpCounter</CODE> value for this variable.
- * @exception ClassCastException An attempt has been made to cast an object to a subclass of which
- * it is not an instance.
- */
- final public SnmpCounter getSnmpCounterValue() throws ClassCastException {
- return (SnmpCounter)this.value ;
- }
-
- /**
- * Sets the <CODE>SnmpCounter</CODE> value part associated with this <CODE>SnmpVarBind</CODE>
- * with the specified counter value.
- * The status is updated to indicate that the value is valid.
- * @param val The new counter value.
- * @exception IllegalArgumentException The specified value is negative or larger than
- * <CODE>SnmpUnsignedInt.MAX_VALUE</CODE>.
- * @see SnmpCounter
- */
- final public void setSnmpCounterValue(long val) throws IllegalArgumentException {
- clearValue() ;
- this.value = new SnmpCounter(val) ;
- setValueValid() ;
- }
-
- /**
- * Returns the value part associated with this <CODE>SnmpVarBind</CODE>.
- * @return The <CODE>SnmpGauge</CODE> value for this variable.
- * @exception ClassCastException An attempt has been made to cast an object to a subclass of which
- * it is not an instance.
- */
- final public SnmpGauge getSnmpGaugeValue() throws ClassCastException {
- return (SnmpGauge)this.value ;
- }
-
- /**
- * Sets the <CODE>SnmpGauge</CODE> value part associated with this <CODE>SnmpVarBind</CODE>
- * with the specified gauge value.
- * The status is updated to indicate that the value is valid.
- * @param val The new gauge value.
- * @exception IllegalArgumentException The specified value is negative or larger than
- * <CODE>SnmpUnsignedInt.MAX_VALUE</CODE>.
- * @see SnmpGauge
- */
- final public void setSnmpGaugeValue(long val) throws IllegalArgumentException {
- clearValue() ;
- this.value = new SnmpGauge(val) ;
- setValueValid() ;
- }
-
- /**
- * Returns the value part associated with this <CODE>SnmpVarBind</CODE>.
- * @return The <CODE>SnmpTimeticks</CODE> value for this variable.
- * @exception ClassCastException An attempt has been made to cast an object to a subclass of which
- * it is not an instance.
- */
- final public SnmpTimeticks getSnmpTimeticksValue() throws ClassCastException {
- return (SnmpTimeticks)this.value ;
- }
-
- /**
- * Sets the <CODE>SnmpTimeticks</CODE> value part associated with this <CODE>SnmpVarBind</CODE>
- * with the specified timeticks value.
- * The status is updated to indicate that the value is valid.
- * @param val The new timeticks value.
- * @exception IllegalArgumentException The specified value is negative or larger than
- * <CODE>SnmpUnsignedInt.MAX_VALUE</CODE>.
- * @see SnmpTimeticks
- */
- final public void setSnmpTimeticksValue(long val) throws IllegalArgumentException {
- clearValue() ;
- this.value = new SnmpTimeticks(val) ;
- setValueValid() ;
- }
-
- /**
- * Returns the value part associated with this <CODE>SnmpVarBind</CODE>.
- * @return The <CODE>SnmpOid</CODE> value for this variable.
- * @exception ClassCastException An attempt has been made to cast an object to a subclass of which
- * it is not an instance.
- */
- final public SnmpOid getSnmpOidValue() throws ClassCastException {
- return (SnmpOid)this.value ;
- }
-
- /**
- * Sets the <CODE>SnmpOid</CODE> value part associated with this <CODE>SnmpVarBind</CODE>
- * with the specified OID value.
- * The status is updated to indicate that the value is valid.
- * @param val The new OID value.
- * @exception IllegalArgumentException The specified value is neither a numeric <CODE>String</CODE>
- * nor a <CODE>String</CODE> of the MIB database.
- * @see SnmpOid
- */
- final public void setSnmpOidValue(String val) throws IllegalArgumentException {
- clearValue() ;
- this.value = new SnmpOid(val) ;
- setValueValid() ;
- }
-
- /**
- * Returns the value part associated with this <CODE>SnmpVarBind</CODE>.
- * @return The <CODE>SnmpIpAddress</CODE> value for this variable.
- * @exception ClassCastException An attempt has been made to cast an object to a subclass of which
- * it is not an instance.
- */
- final public SnmpIpAddress getSnmpIpAddressValue() throws ClassCastException {
- return (SnmpIpAddress)this.value ;
- }
-
- /**
- * Sets the <CODE>SnmpIpAddress</CODE> value part associated with this <CODE>SnmpVarBind</CODE>
- * with the specified ipAddress value.
- * The status is updated to indicate that the value is valid.
- * @param val The new IP address value.
- * @exception IllegalArgumentException The specified value does not correspond to an IP address.
- * @see SnmpIpAddress
- */
- final public void setSnmpIpAddressValue(String val) throws IllegalArgumentException {
- clearValue() ;
- this.value = new SnmpIpAddress(val) ;
- setValueValid() ;
- }
-
- /**
- * Returns the value part associated with this <CODE>SnmpVarBind</CODE>.
- * @return The <CODE>SnmpString</CODE> value for this variable.
- * @exception ClassCastException An attempt has been made to cast an object to a subclass of which
- * it is not an instance.
- */
- final public SnmpString getSnmpStringValue() throws ClassCastException {
- return (SnmpString)this.value ;
- }
-
- /**
- * Sets the <CODE>SnmpString</CODE> value part associated with this <CODE>SnmpVarBind</CODE>
- * with the specified string value.
- * The status is updated to indicate that the value is valid.
- * @param val The new string value.
- * @see SnmpString
- */
- final public void setSnmpStringValue(String val) {
- clearValue() ;
- this.value = new SnmpString(val) ;
- setValueValid() ;
- }
-
- /**
- * Returns the value part associated with this <CODE>SnmpVarBind</CODE>.
- * @return The <CODE>SnmpOpaque</CODE> value for this variable.
- * @exception ClassCastException An attempt has been made to cast an object to a subclass of which
- * it is not an instance.
- */
- final public SnmpOpaque getSnmpOpaqueValue() throws ClassCastException {
- return (SnmpOpaque)this.value ;
- }
-
- /**
- * Sets the <CODE>SnmpOpaque</CODE> value part associated with this <CODE>SnmpVarBind</CODE>
- * with the specified bytes array values.
- * The status is updated to indicate that the value is valid.
- * @param val The new bytes array value.
- * @see SnmpOpaque
- */
- final public void setSnmpOpaqueValue(byte[] val) {
- clearValue() ;
- this.value = new SnmpOpaque(val) ;
- setValueValid() ;
- }
-
- /**
- * Returns the value part associated with this <CODE>SnmpVarBind</CODE>.
- * @return The <CODE>SnmpStringFixed</CODE> value for this variable.
- * @exception ClassCastException An attempt has been made to cast an object to a subclass of which
- * it is not an instance.
- */
- final public SnmpStringFixed getSnmpStringFixedValue() throws ClassCastException {
- return (SnmpStringFixed)this.value ;
- }
-
- /**
- * Sets the <CODE>SnmpStringFixed</CODE> value part associated with this <CODE>SnmpVarBind</CODE>
- * with the specified string value.
- * The status is updated to indicate that the value is valid.
- * @param val The new string value.
- * @see SnmpStringFixed
- */
- final public void setSnmpStringFixedValue(String val) {
- clearValue() ;
- this.value = new SnmpStringFixed(val) ;
- setValueValid() ;
- }
-
-
- // PUBLIC METHODS
- //---------------
-
- /**
- * Consults the MIB table storage to resolve the name to its OID type structure.
- * @param name The MIB variable name or a dot-formatted OID <CODE>String</CODE>.
- * @return The <CODE>SnmpOidRecord</CODE> object containing information on the MIB variable.
- * @exception SnmpStatusException An error occurred while resolving the MIB variable name.
- */
- public SnmpOidRecord resolveVarName(String name) throws SnmpStatusException {
-
- SnmpOidTable mibTable = oid.getSnmpOidTable();
- if (mibTable == null)
- throw new SnmpStatusException(SnmpStatusException.noSuchName);
- int index = name.indexOf('.');
- if (index < 0) {
- return mibTable.resolveVarName(name);
- } else {
- return mibTable.resolveVarOid(name);
- }
- }
-
- /**
- * Returns the status of the value associated with this <CODE>SnmpVarBind</CODE> as an integer.
- * This value is one of {@link #stValueUnspecified}, {@link #stValueOk}, {@link #stValueNoSuchObject},
- * {@link #stValueNoSuchInstance}, {@link #stValueEndOfMibView}.
- * @return The status of the associated value.
- */
- final public int getValueStatus() {
- return status ;
- }
-
- /**
- * Returns the status of the value associated with this <CODE>SnmpVarBind</CODE> as a <CODE>String</CODE>.
- * This value is a displayable representation of the status integer value.
- * It is one of <CODE>Value not initialized</CODE>, <CODE>Valid Value</CODE>, <CODE>No such object</CODE>,
- * <CODE>No such Instance</CODE>, <CODE>End of Mib View</CODE>.
- * @return The status of the associated value.
- */
- final public String getValueStatusLegend() {
- return statusLegend[status] ;
- }
-
- /**
- * Checks whether the object contains a valid accessible value.
- * @return <CODE>true</CODE> if the associated value is valid, <CODE>false</CODE> otherwise.
- */
- final public boolean isValidValue() {
- return (status == stValueOk) ;
- }
-
- /**
- * Checks whether the value associated with this <CODE>SnmpVarBind</CODE> is unspecified.
- * @return <CODE>true</CODE> if the status is unspecified, <CODE>false</CODE> otherwise.
- */
- final public boolean isUnspecifiedValue() {
- return (status == stValueUnspecified) ;
- }
-
- /**
- * Clears the value associated with this <CODE>SnmpVarBind</CODE> and sets the status to
- * <CODE>stValueUnspecified</CODE>.
- */
- final public void clearValue() {
- this.value = null ;
- status = stValueUnspecified ;
- }
-
- /**
- * Checks whether the OID for this variable completely matches the OID part of the specified
- * <CODE>SnmpVarBind</CODE> object.
- * @param var The object whose OID part is to be matched.
- * @return <CODE>true</CODE> if the OID part matches exactly, <CODE>false</CODE> otherwise.
- */
- final public boolean isOidEqual(SnmpVarBind var) {
- return this.oid.equals(var.oid) ;
- }
-
- /**
- * Adds an instance part to the OID in the <CODE>SnmpOid</CODE> object.
- * Note that there is no <CODE>getInstance</CODE> method.
- * This method will directly add the instance to the <CODE>SnmpOid</CODE> object.
- * @param inst The sub-identifier to be appended to the OID.
- */
- final public void addInstance(long inst) {
- oid.append(inst) ;
- return ;
- }
-
- /**
- * Adds an instance part to the OID in the <CODE>SnmpOid</CODE> object.
- * Note that there is no <CODE>getInstance</CODE> method.
- * This method will directly add the instance to the <CODE>SnmpOid</CODE> object.
- * @param inst The sub-identifier array to be appended to the OID.
- * @exception SnmpStatusException An error occurred while accessing a MIB node.
- */
- final public void addInstance(long[] inst) throws SnmpStatusException {
- oid.addToOid(inst) ;
- return ;
- }
-
- /**
- * Adds an instance part to the OID in the <CODE>SnmpOid</CODE> object.
- * Note that there is no <CODE>getInstance</CODE> method.
- * This method will directly add the instance to the <CODE>SnmpOid</CODE> object.
- * @param inst Dot-formatted sub-identifier <CODE>String</CODE> to be appended to the OID.
- * @exception SnmpStatusException An error occurred while accessing a MIB node.
- */
- final public void addInstance(String inst) throws SnmpStatusException {
- if (inst != null) {
- oid.addToOid(inst) ;
- }
- return ;
- }
-
- /**
- * Inserts a sub-id at the beginning of the OID of this <CODE>SnmpVarBind</CODE>.
- * @param oid The sub-id to insert.
- */
- public void insertInOid(int oid) {
- this.oid.insert(oid) ;
- }
-
- /**
- * Appends the specified <CODE>SnmpOid</CODE> to the end of the OID of this <CODE>SnmpVarBind</CODE>.
- * @param oid The OID to append.
- */
- public void appendInOid(SnmpOid oid) {
- this.oid.append(oid) ;
- }
-
- /**
- * Determines whether the <CODE>SnmpVarBind</CODE> has an SNMP exception
- * (generated by agent in response to a request).
- * @return <CODE>true</CODE> if the <CODE>SnmpVarBind</CODE> has an SNMP response exception,
- * <CODE>false</CODE> otherwise.
- */
- final public synchronized boolean hasVarBindException() {
- switch (status) {
- case stValueUnspecified :
- case stValueNoSuchObject :
- case stValueNoSuchInstance :
- case stValueEndOfMibView :
- return true ;
- }
- return false ;
- }
-
- /**
- * Clones and copies the OID and value part from another <CODE>SnmpVarBind</CODE> object.
- * @param var The <CODE>SnmpVarBind</CODE> clone.
- */
- public void copyValueAndOid(SnmpVarBind var) {
- setOid((SnmpOid) (var.oid.clone())) ;
- copyValue(var) ;
- }
-
- /**
- * Clones and copies only the value part from another <CODE>SnmpVarBind</CODE> object.
- * @param var The <CODE>SnmpVarBind</CODE> clone.
- */
- public void copyValue(SnmpVarBind var) {
- if (var.isValidValue()) {
- this.value = var.getSnmpValue().duplicate() ;
- setValueValid() ;
- } else {
- status = var.getValueStatus() ;
- if (status == stValueEndOfMibView) value=endOfMibView;
- else if (status == stValueNoSuchObject) value=noSuchObject;
- else if (status == stValueNoSuchInstance) value=noSuchInstance;
- }
- }
-
- /**
- * Clones the SNMP variable. It does not clone the value portion.
- * @return A new object with the value part set to null.
- */
- public Object cloneWithoutValue() {
- SnmpOid noid = (SnmpOid)this.oid.clone() ;
- return new SnmpVarBind(noid) ;
- }
-
- /**
- * Clones the SNMP variable (including value).
- * @return The SNMP variable clone.
- */
- public Object clone() {
- // SnmpVarBind v = null ;
- // try {
- // v = (SnmpVarBind) super.clone() ;
- // v.copyValueAndOid(this) ;
- // } catch (CloneNotSupportedException e) {
- // throw new InternalError() ;
- // }
- // return v ;
- SnmpVarBind v = new SnmpVarBind() ;
- v.copyValueAndOid(this) ;
- return v ;
- }
-
- /**
- * Returns the printable ASCII representation for the corresponding variable value.
- * @return The printable ASCII representation.
- */
- final public String getStringValue() {
- return this.value.toString() ;
- }
-
- /**
- * Set the value to {@link #noSuchObject}. This is equivalent to
- * <code>setSnmpValue(SnmpVarBind.noSuchObject)</code>.
- **/
- final public void setNoSuchObject() {
- value=noSuchObject;
- status=stValueNoSuchObject;
- }
-
- /**
- * Set the value to {@link #noSuchInstance}. This is equivalent to
- * <code>setSnmpValue(SnmpVarBind.noSuchInstance)</code>.
- **/
- final public void setNoSuchInstance() {
- value=noSuchInstance;
- status=stValueNoSuchInstance;
- }
-
- /**
- * Set the value to {@link #endOfMibView}. This is equivalent to
- * <code>setSnmpValue(SnmpVarBind.endOfMibView)</code>.
- **/
- final public void setEndOfMibView() {
- value=endOfMibView;
- status=stValueEndOfMibView;
- }
-
- /**
- * Returns the printable ASCII representation of this <CODE>SnmpVarBind</CODE>.
- * @return The printable ASCII representation.
- */
- final public String toString() {
- StringBuffer s = new StringBuffer(400) ;
- s.append("Object ID : " + this.oid.toString()) ;
-
- if (isValidValue()) {
- s.append(" (Syntax : " + this.value.getTypeName() + ")\n") ;
- s.append("Value : " + this.value.toString()) ;
- } else {
- s.append("\n" + "Value Exception : " + getValueStatusLegend()) ;
- }
- return s.toString() ;
- }
-
-
- // PRIVATE METHODS
- //----------------
-
- /**
- * Sets the status to indicate that the value for this <CODE>SnmpVarBind</CODE> is valid.
- */
- private void setValueValid() {
- if (value == endOfMibView) status=stValueEndOfMibView;
- else if (value == noSuchObject) status=stValueNoSuchObject;
- else if (value == noSuchInstance) status=stValueNoSuchInstance;
- else status = stValueOk ;
- }
-
- private void handleLong(String oid, int index) throws NumberFormatException, SnmpStatusException {
-
- String str;
- if (index >0) {
- str= oid.substring(0, index);
- } else {
- str= oid ;
- }
-
- // just parse the element.
- //
- Long.parseLong(str);
- }
- }