@Override public ResponseProcessor buildNextPdu(PduBuilder pduBuilder) { if (pduBuilder.getMaxVarsPerPdu() < 1) { throw new IllegalArgumentException("maxVarsPerPdu < 1"); } SnmpObjId requestOid = m_oid.decrement(); LOG.debug("Requesting oid following: {}", requestOid); pduBuilder.addOid(requestOid); pduBuilder.setNonRepeaters(1); pduBuilder.setMaxRepetitions(1); ResponseProcessor rp = new ResponseProcessor() { @Override public void processResponse(SnmpObjId responseObjId, SnmpValue val) { LOG.debug("Processing varBind: {} = {}", responseObjId, val); if (val.isEndOfMib()) { receivedEndOfMib(); } if (m_oid.equals(responseObjId)) { storeResult(new SnmpResult(m_base, m_inst, val)); } setFinished(true); } @Override public boolean processErrors(int errorStatus, int errorIndex) { if (errorStatus == NO_ERR) { return false; } else if (errorStatus == TOO_BIG_ERR) { throw new IllegalArgumentException( "Unable to handle tooBigError for oid request " + m_oid.decrement()); } else if (errorStatus == GEN_ERR) { reportGenErr( "Received genErr requesting oid " + m_oid.decrement() + ". Marking column is finished."); errorOccurred(); return true; } else if (errorStatus == NO_SUCH_NAME_ERR) { reportNoSuchNameErr( "Received noSuchName reqeusting oid " + m_oid.decrement() + ". Marking column is finished."); errorOccurred(); return true; } else { throw new IllegalArgumentException( "Unexpected error processing oid " + m_oid.decrement() + ". Aborting!"); } } }; return rp; }