private PDU request(PDU requestPDU, Target target) throws Exception { Snmp snmp = getSnmp(); ResponseEvent re = snmp.send(requestPDU, target); if(re == null) throw new IOException("SNMP Timeout"); PDU response = re.getResponse(); if(response == null || re.getError() != null) { Exception snmpException = re.getError(); if(snmpException == null) snmpException = new IOException("SNMP Timeout"); throw snmpException; } return response; }
@Override public void onResponse(ResponseEvent responseEvent) { // need to cancel the request here otherwise SNMP4J Keeps it around forever... go figure m_session.cancel(responseEvent.getRequest(), this); // Check to see if we got an interrupted exception if (responseEvent.getError() instanceof InterruptedException) { LOG.debug("Interruption event. We have probably tried to close the session due to an error", responseEvent.getError()); // Check to see if the response is null, indicating a timeout } else if (responseEvent.getResponse() == null) { handleTimeout(getName()+": snmpTimeoutError for: " + getAddress()); // Check to see if we got any kind of error } else if (responseEvent.getError() != null){ handleError(getName()+": snmpInternalError: " + responseEvent.getError() + " for: " + getAddress(), responseEvent.getError()); // If we have a PDU in the response, process it } else { try { processResponse(responseEvent.getResponse()); } catch (final SnmpException e) { handleFatalError(e); } } }
@Override public void onResponse(ResponseEvent responseEvent) { // need to cancel the request here otherwise SNMP4J Keeps it around forever... go figure m_session.cancel(responseEvent.getRequest(), this); // Check to see if we got an interrupted exception if (responseEvent.getError() instanceof InterruptedException) { LOG.debug("Interruption event. We have probably tried to close the session due to an error", responseEvent.getError()); // Check to see if the response is null, indicating a timeout } else if (responseEvent.getResponse() == null) { handleTimeout(getName()+": snmpTimeoutError for: " + getAddress()); // Check to see if we got any kind of error } else if (responseEvent.getError() != null){ handleError(getName()+": snmpInternalError: " + responseEvent.getError() + " for: " + getAddress(), responseEvent.getError()); // If we have a PDU in the response, process it } else { try { processResponse(responseEvent.getResponse()); } catch (final SnmpException e) { handleFatalError(e); } } }
public void onResponse(ResponseEvent responseEvent) { // need to cancel the request here otherwise SNMP4J Keeps it around forever... go figure m_session.cancel(responseEvent.getRequest(), this); // Check to see if we got an interrupted exception if (responseEvent.getError() instanceof InterruptedException) { if (log().isDebugEnabled()) { log().debug("Interruption event. We have probably tried to close the session due to an error: " + responseEvent.getError(), responseEvent.getError()); } // Check to see if the response is null, indicating a timeout } else if (responseEvent.getResponse() == null) { handleTimeout(getName()+": snmpTimeoutError for: " + getAddress()); // Check to see if we got any kind of error } else if (responseEvent.getError() != null){ handleError(getName()+": snmpInternalError: " + responseEvent.getError() + " for: " + getAddress(), responseEvent.getError()); // If we have a PDU in the response, process it } else { processResponse(responseEvent.getResponse()); } }
/** * TODO: Merge this logic with {@link Snmp4JWalker.Snmp4JResponseListener} #processResponse(PDU response) */ private static SnmpValue[] processResponse(Snmp4JAgentConfig agentConfig, ResponseEvent responseEvent) throws IOException { SnmpValue[] retvalues = { null }; if (responseEvent.getResponse() == null) { LOG.warn("processResponse: Timeout. Agent: {}, requestID={}", agentConfig, responseEvent.getRequest().getRequestID()); } else if (responseEvent.getError() != null) { LOG.warn("processResponse: Error during get operation. Error: {}, requestID={}", responseEvent.getError().getLocalizedMessage(), responseEvent.getError(), responseEvent.getRequest().getRequestID()); } else if (responseEvent.getResponse().getType() == PDU.REPORT) { LOG.warn("processResponse: Error during get operation. Report returned with varbinds: {}, requestID={}", responseEvent.getResponse().getVariableBindings(), responseEvent.getRequest().getRequestID()); } else if (responseEvent.getResponse().getVariableBindings().size() < 1) { LOG.warn("processResponse: Received PDU with 0 varbinds. Agent: {}, requestID={}", agentConfig, responseEvent.getRequest().getRequestID()); } else if (responseEvent.getResponse().get(0).getSyntax() == SMIConstants.SYNTAX_NULL) { LOG.info("processResponse: Null value returned in varbind: {}. Agent: {}, requestID={}", responseEvent.getResponse().get(0), agentConfig, responseEvent.getRequest().getRequestID()); } else { retvalues = convertResponseToValues(responseEvent); LOG.debug("processResponse: SNMP operation successful, value: {}", (Object)retvalues); } return retvalues; }
/** * TODO: Merge this logic with {@link Snmp4JWalker.Snmp4JResponseListener} #processResponse(PDU response) */ private static SnmpValue[] processResponse(Snmp4JAgentConfig agentConfig, ResponseEvent responseEvent) throws IOException { SnmpValue[] retvalues = { null }; if (responseEvent.getResponse() == null) { LOG.warn("processResponse: Timeout. Agent: {}, requestID={}", agentConfig, responseEvent.getRequest().getRequestID()); } else if (responseEvent.getError() != null) { LOG.warn("processResponse: Error during get operation. Error: {}, requestID={}", responseEvent.getError().getLocalizedMessage(), responseEvent.getError(), responseEvent.getRequest().getRequestID()); } else if (responseEvent.getResponse().getType() == PDU.REPORT) { LOG.warn("processResponse: Error during get operation. Report returned with varbinds: {}, requestID={}", responseEvent.getResponse().getVariableBindings(), responseEvent.getRequest().getRequestID()); } else if (responseEvent.getResponse().getVariableBindings().size() < 1) { LOG.warn("processResponse: Received PDU with 0 varbinds. Agent: {}, requestID={}", agentConfig, responseEvent.getRequest().getRequestID()); } else if (responseEvent.getResponse().get(0).getSyntax() == SMIConstants.SYNTAX_NULL) { LOG.info("processResponse: Null value returned in varbind: {}. Agent: {}, requestID={}", responseEvent.getResponse().get(0), agentConfig, responseEvent.getRequest().getRequestID()); } else { retvalues = convertResponseToValues(responseEvent); LOG.debug("processResponse: SNMP operation successful, value: {}", (Object)retvalues); } return retvalues; }
/** * TODO: Merge this logic with {@link Snmp4JWalker.Snmp4JResponseListener#processResponse(PDU response)} */ private SnmpValue[] processResponse(Snmp4JAgentConfig agentConfig, ResponseEvent responseEvent) throws IOException { SnmpValue[] retvalues = { null }; if (responseEvent.getResponse() == null) { log().warn("send: Timeout. Agent: "+agentConfig); } else if (responseEvent.getError() != null) { log().warn("send: Error during get operation. Error: "+responseEvent.getError().getLocalizedMessage(), responseEvent.getError()); } else if (responseEvent.getResponse().getType() == PDU.REPORT) { log().warn("send: Error during get operation. Report returned with varbinds: "+responseEvent.getResponse().getVariableBindings()); } else if (responseEvent.getResponse().getVariableBindings().size() < 1) { log().warn("send: Received PDU with 0 varbinds."); } else if (responseEvent.getResponse().get(0).getSyntax() == SMIConstants.SYNTAX_NULL) { log().info("send: Null value returned in varbind: " + responseEvent.getResponse().get(0)); } else { retvalues = convertResponseToValues(responseEvent); if (log().isDebugEnabled()) { log().debug("send: Snmp operation successful. Value: "+Arrays.toString(retvalues)); } } return retvalues; }
protected boolean checkResponse(ResponseEvent event) { if (event.getError() != null) { finished = true; emptyCache(); listener.finished(new TableEvent(this, userObject, event.getError())); } else if (event.getResponse() == null) { finished = true; // timeout emptyCache(); listener.finished(new TableEvent(this, userObject, TableEvent.STATUS_TIMEOUT)); } else if (event.getResponse().getType() == PDU.REPORT) { finished = true; emptyCache(); listener.finished(new TableEvent(this, userObject, event.getResponse())); } else if (event.getResponse().getErrorStatus() != PDU.noError) { finished = true; emptyCache(); listener.finished(new TableEvent(this, userObject, event.getResponse().getErrorStatus())); } else { return true; } return false; }
protected boolean checkResponse(ResponseEvent event) { if (event.getError() != null) { finished = true; emptyCache(); listener.finished(new TableEvent(this, userObject, event.getError())); } else if (event.getResponse() == null) { finished = true; // timeout emptyCache(); listener.finished(new TableEvent(this, userObject, TableEvent.STATUS_TIMEOUT)); } else if (event.getResponse().getType() == PDU.REPORT) { finished = true; emptyCache(); listener.finished(new TableEvent(this, userObject, event.getResponse())); } else if (event.getResponse().getErrorStatus() != PDU.noError) { finished = true; emptyCache(); listener.finished(new TableEvent(this, userObject, event.getResponse().getErrorStatus())); } else { return true; } return false; }
protected boolean checkResponse(ResponseEvent event) { if (event.getError() != null) { finished = true; emptyCache(); listener.finished(new TableEvent(this, userObject, event.getError())); } else if (event.getResponse() == null) { finished = true; // timeout emptyCache(); listener.finished(new TableEvent(this, userObject, TableEvent.STATUS_TIMEOUT)); } else if (event.getResponse().getType() == PDU.REPORT) { finished = true; emptyCache(); listener.finished(new TableEvent(this, userObject, event.getResponse())); } else if (event.getResponse().getErrorStatus() != PDU.noError) { finished = true; emptyCache(); listener.finished(new TableEvent(this, userObject, event.getResponse().getErrorStatus())); } else { return true; } return false; }