/** * Return the RowStatus code value specified in this request. * <p> * The RowStatus code value should be one of the values defined * by {@link com.sun.jmx.snmp.EnumRowStatus}. These codes correspond * to RowStatus codes as defined in RFC 2579, plus the <i>unspecified</i> * value which is SNMP Runtime specific. * <p> * * @param req The sub-request that must be handled by this node. * * @param rowOid The <CODE>SnmpOid</CODE> identifying the table * row involved in the operation. * * @param depth The depth reached in the OID tree. * * @return The RowStatus code specified in this request, if any: * <ul> * <li>If the specified row does not exist and this table do * not use any variable to control creation/deletion of * rows, then default creation mechanism is assumed and * <i>createAndGo</i> is returned</li> * <li>Otherwise, if the row exists and this table do not use any * variable to control creation/deletion of rows, * <i>unspecified</i> is returned.</li> * <li>Otherwise, if the request does not contain the control variable, * <i>unspecified</i> is returned.</li> * <li>Otherwise, mapRowStatus() is called to extract the RowStatus * code from the SnmpVarBind that contains the control variable.</li> * </ul> * * @exception SnmpStatusException if the value of the control variable * could not be mapped to a RowStatus code. * * @see com.sun.jmx.snmp.EnumRowStatus **/ protected int getRowAction(SnmpMibSubRequest req, SnmpOid rowOid, int depth) throws SnmpStatusException { final boolean isnew = req.isNewEntry(); final SnmpVarBind vb = req.getRowStatusVarBind(); if (vb == null) { if (isnew && ! hasRowStatus()) return EnumRowStatus.createAndGo; else return EnumRowStatus.unspecified; } try { return mapRowStatus(rowOid, vb, req.getUserData()); } catch( SnmpStatusException x) { checkRowStatusFail(req, x.getStatus()); } return EnumRowStatus.unspecified; }