[SNMP4J] Inconsistency in JavaDoc
Paul Donohue
snmp4j at topquark.net
Thu May 1 22:26:02 CEST 2008
There are two examples of an onResponse handler for Asynchronous Messages in the JavaDocs:
http://www.snmp4j.org/doc/org/snmp4j/package-summary.html shows:
ResponseListener listener = new ResponseListener() {
public void onResponse(ResponseEvent event) {
PDU response = event.getResponse();
PDU request = event.getRequest();
if (response == null) {
System.out.println("Request "+request+" timed out");
}
else {
System.out.println("Received response "+response+" on request "+
request);
}
};
(note there is a missing } after the else)
http://www.snmp4j.org/doc/org/snmp4j/Snmp.html shows:
ResponseListener listener = new ResponseListener() {
public void onResponse(ResponseEvent event) {
// Always cancel async request when response has been received
// otherwise a memory leak is created! Not canceling a request
// immediately can be useful when sending a request to a broadcast
// address.
((Snmp)event.getSource()).cancel(event.getRequest(), this);
System.out.println("Received response PDU is: "+event.getResponse());
}
};
Could you update the JavaDoc to make these two examples consistent?
More importantly, what should be done when the request times out?
Should the code be:
public void onResponse(ResponseEvent event) {
if (event.getResponse() == null) {
System.out.println("Request "+event.getRequest()+" timed out");
}
else {
((Snmp)event.getSource()).cancel(event.getRequest(), this);
System.out.println("Received response "+event.getResponse()+
" on request "+event.getRequest());
}
}
Or:
public void onResponse(ResponseEvent event) {
((Snmp)event.getSource()).cancel(event.getRequest(), this);
if (event.getResponse() == null) {
System.out.println("Request "+event.getRequest()+" timed out");
}
else {
System.out.println("Received response "+event.getResponse()+
" on request "+event.getRequest());
}
}
The following note in the ChangeLog for 1.9.1c makes me think the first is correct, but I wanted to make sure:
* Improved: Pending async requests will be removed after
timeout even if the response listener did not call
Snmp.cancel.
Thanks!
-Paul
More information about the SNMP4J
mailing list