You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
212 lines
7.9 KiB
212 lines
7.9 KiB
/*
|
|
* Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
|
|
* ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
|
|
*
|
|
*
|
|
*
|
|
*
|
|
*
|
|
*
|
|
*
|
|
*
|
|
*
|
|
*
|
|
*
|
|
*
|
|
*
|
|
*
|
|
*
|
|
*
|
|
*
|
|
*
|
|
*
|
|
*
|
|
*/
|
|
|
|
package com.sun.jmx.snmp.agent;
|
|
|
|
import java.util.Enumeration;
|
|
import java.util.Vector;
|
|
import com.sun.jmx.snmp.SnmpVarBind;
|
|
import com.sun.jmx.snmp.SnmpStatusException;
|
|
import com.sun.jmx.snmp.SnmpOid;
|
|
// import com.sun.jmx.snmp.SnmpIndex;
|
|
|
|
/**
|
|
* This interface models an SNMP sub request to be performed on a specific
|
|
* SNMP MIB node. The node involved can be either an SNMP group, an SNMP table,
|
|
* or an SNMP table entry (conceptual row). The conceptual row may or may not
|
|
* already exist. If the row did not exist at the time when the request
|
|
* was received, the <CODE>isNewEntry()</CODE> method will return <CODE>
|
|
* true</CODE>.
|
|
* <p>
|
|
* Objects implementing this interface will be allocated by the SNMP engine.
|
|
* You will never need to implement this interface. You will only use it.
|
|
* </p>
|
|
* <p><b>This API is a Sun Microsystems internal API and is subject
|
|
* to change without notice.</b></p>
|
|
*/
|
|
public interface SnmpMibSubRequest extends SnmpMibRequest {
|
|
/**
|
|
* Return the list of varbind to be handled by the SNMP MIB node.
|
|
* <p>
|
|
* <b>Note:</b> <ul>
|
|
* <i>In case of SET operation, if this node is a table row which
|
|
* contains a control variable (as identified by the table's
|
|
* isRowStatus() method) the control variable will not
|
|
* be included in this list: it will be obtained by calling
|
|
* getRowStatusVarBind(). This will allow you to handle the control
|
|
* variable specifically.</i><br>
|
|
* You will never need to worry about this unless you need to
|
|
* implement a non standard mechanism for handling row
|
|
* creation and deletion.
|
|
* </ul>
|
|
* <p>
|
|
* @return The elements of the enumeration are instances of
|
|
* {@link com.sun.jmx.snmp.SnmpVarBind}
|
|
*/
|
|
@Override
|
|
public Enumeration<SnmpVarBind> getElements();
|
|
|
|
/**
|
|
* Return the list of varbind to be handled by the SNMP MIB node.
|
|
* <p>
|
|
* <b>Note:</b> <ul>
|
|
* <i>In case of SET operation, if this node is a table row which
|
|
* contains a control variable (as identified by the table's
|
|
* isRowStatus() method) the control variable will not
|
|
* be included in this list: it will be obtained by calling
|
|
* getRowStatusVarBind(). This will allow you to handle the control
|
|
* variable specifically.</i><br>
|
|
* You will never need to worry about this unless you need to
|
|
* implement a non standard mechanism for handling row
|
|
* creation and deletion.
|
|
* </ul>
|
|
* <p>
|
|
* @return The elements of the vector are instances of
|
|
* {@link com.sun.jmx.snmp.SnmpVarBind}
|
|
*/
|
|
@Override
|
|
public Vector<SnmpVarBind> getSubList();
|
|
|
|
/**
|
|
* Return the part of the OID identifying the table entry involved.
|
|
* <p>
|
|
*
|
|
* @return {@link com.sun.jmx.snmp.SnmpOid} or <CODE>null</CODE>
|
|
* if the request is not directed to an entry.
|
|
*/
|
|
public SnmpOid getEntryOid();
|
|
|
|
/**
|
|
* Indicate whether the entry involved is a new entry.
|
|
* This method will return <CODE>true</CODE> if the entry was not
|
|
* found when the request was processed. As a consequence, <CODE>
|
|
* true</CODE> means that either the entry does not exist yet,
|
|
* or it has been created while processing this request.
|
|
* The result of this method is only significant when an entry
|
|
* is involved.
|
|
*
|
|
* <p>
|
|
* @return <CODE>true</CODE> If the entry did not exist,
|
|
* or <CODE>false</CODE> if the entry involved was found.
|
|
*/
|
|
public boolean isNewEntry();
|
|
|
|
/**
|
|
* Return the varbind that holds the RowStatus variable.
|
|
* It corresponds to the varbind that was identified by
|
|
* the <code>isRowStatus()</code> method generated by mibgen
|
|
* on {@link com.sun.jmx.snmp.agent.SnmpMibTable} derivatives.
|
|
* <ul><li>In SMIv2, it is the varbind which contains the columnar
|
|
* object implementing the RowStatus TEXTUAL-CONVENTION.</li>
|
|
* <li>In SMIv1 nothing special is generated</li>
|
|
* <ul>You may however subclass the generated table metadata
|
|
* class in order to provide your own implementation of
|
|
* isRowStatus(), getRowAction(), isRowReady() and
|
|
* setRowStatus()
|
|
* (see {@link com.sun.jmx.snmp.agent.SnmpMibTable}).</ul>
|
|
* </ul>
|
|
* <p>
|
|
* @return a varbind that serves to control the table modification.
|
|
* <code>null</code> means that no such varbind could be
|
|
* identified.<br>
|
|
* <b>Note:</b><i>The runtime will only try to identify
|
|
* the RowStatus varbind when processing an
|
|
* SNMP SET request. In this case, the identified
|
|
* varbind will not be included in the set of varbinds
|
|
* returned by getSubList() and getElements().
|
|
* </i>
|
|
*
|
|
**/
|
|
public SnmpVarBind getRowStatusVarBind();
|
|
|
|
/**
|
|
* This method should be called when a status exception needs to
|
|
* be raised for a given varbind of an SNMP GET request. This method
|
|
* performs all the necessary conversions (SNMPv1 <=> SNMPv2) and
|
|
* propagates the exception if needed:
|
|
* If the version is SNMP v1, the exception is propagated.
|
|
* If the version is SNMP v2, the exception is stored in the varbind.
|
|
* This method also takes care of setting the correct value of the
|
|
* index field.
|
|
* <p>
|
|
*
|
|
* @param varbind The varbind for which the exception is
|
|
* registered. Note that this varbind <b>must</b> have
|
|
* been obtained from the enumeration returned by
|
|
* <CODE>getElements()</CODE>, or from the vector
|
|
* returned by <CODE>getSubList()</CODE>
|
|
*
|
|
* @param exception The exception to be registered for the given varbind.
|
|
*
|
|
*/
|
|
public void registerGetException(SnmpVarBind varbind,
|
|
SnmpStatusException exception)
|
|
throws SnmpStatusException;
|
|
|
|
/**
|
|
* This method should be called when a status exception needs to
|
|
* be raised for a given varbind of an SNMP SET request. This method
|
|
* performs all the necessary conversions (SNMPv1 <=> SNMPv2) and
|
|
* propagates the exception if needed.
|
|
* This method also takes care of setting the correct value of the
|
|
* index field.
|
|
* <p>
|
|
*
|
|
* @param varbind The varbind for which the exception is
|
|
* registered. Note that this varbind <b>must</b> have
|
|
* been obtained from the enumeration returned by
|
|
* <CODE>getElements()</CODE>, or from the vector
|
|
* returned by <CODE>getSubList()</CODE>
|
|
*
|
|
* @param exception The exception to be registered for the given varbind.
|
|
*
|
|
*/
|
|
public void registerSetException(SnmpVarBind varbind,
|
|
SnmpStatusException exception)
|
|
throws SnmpStatusException;
|
|
|
|
/**
|
|
* This method should be called when a status exception needs to
|
|
* be raised when checking a given varbind for an SNMP SET request.
|
|
* This method performs all the necessary conversions (SNMPv1 <=>
|
|
* SNMPv2) and propagates the exception if needed.
|
|
* This method also takes care of setting the correct value of the
|
|
* index field.
|
|
* <p>
|
|
*
|
|
* @param varbind The varbind for which the exception is
|
|
* registered. Note that this varbind <b>must</b> have
|
|
* been obtained from the enumeration returned by
|
|
* <CODE>getElements()</CODE>, or from the vector
|
|
* returned by <CODE>getSubList()</CODE>
|
|
*
|
|
* @param exception The exception to be registered for the given varbind.
|
|
*
|
|
*/
|
|
public void registerCheckException(SnmpVarBind varbind,
|
|
SnmpStatusException exception)
|
|
throws SnmpStatusException;
|
|
}
|