[SNMP4J] API wish

Frank Fock fock at agentpp.com
Wed Mar 16 23:15:31 CET 2005


Hi Mathias,

These are my thoughts on your wishes:

(1) Although java.sql is not my favorite Java API (I dislike the one-based
indexing of the ResultSet for example), making the access of response values
more convenient is a good point. As you indicate with your example,
the access index for the values should be zero-based. In contrast to your
example, I would place the ResultSet like interface into the ResponseEvent
object. I wonder why you use Java native classes like Integer and Long?
An OctetString would have to be returned as a byte Array then. The only
advantage that I can see, is the independence from SNMP4J classes.

(2) To make the implementation of the Target classes completly "designed
to interfaces", an Interface for UserTarget, SecureTarget, and
CommunityTarget. Once these interfaces exists, one could also add a
GenericTarget implementing both, IUserTarget and ICommunityTarget.
I will add those for the 1.3 release if there is not anybody argueing 
against
it?

(3) I would not call it peer address, because the already existing 
getPeerAddress
does not necessarily return the same address that was used as target 
address when
the request had been sent. I would name the method simply getTarge() and 
that
would then return the target instance that has been supplied with the 
original request.
Again, if there are no objections, I would add this to v1.3.

Best regards,
Frank

Mathias Bogaert wrote:

> Frank,
>
> Here a example how my ideal SNMP API would look.
>
>         snmp.send(pointerPDU, cableModem, new ResponseListener() {
>             public void onResponse(ResponseEvent event) {
>                 Integer macPointer = event.getResponse().getInteger(0);
>                 if (macPointer != null) {
>                     final PDU cpePdu = new PDU();
>                     cpePdu.add(new VariableBinding(new 
> OID(CPE_IP_ADDRESS + macPointer)));
>                     snmp.send(cpePdu, event.getPeerTarget(), new 
> ResponseListener() {
>                         public void onResponse(ResponseEvent event) {
>                             if (event.getResponse() != null) {
>                                 // open database connection and dump data
>                                 CableModemSample sample = new 
> UnarchivedCableModemSample((CableModem) event.getPeerTarget());
>                                 
> sample.setDownstreamOctets(event.getResponse().getLong(0));
>                                 
> sample.setUpstreamOctets(event.getResponse().getLong(1));
>                                 someDao.save(sample);
>                             }
>                             else {
>                                 log.warn("time-out");
>                             }
>                         }
>                     });
>                 }
>                 else {
>                     log.warn("time-out");
>                 }
>             }
>         });
>
> 1. notice the ResultSet like api for querying the returned values
> 2. notice how the CableModem class implements TargetDetails and is 
> directly usable as a target
> 3. notice how the PeerTarget is passed to the second request
>
> Cheers,
> Mathias Bogaert
>
> _______________________________________________
> SNMP4J mailing list
> SNMP4J at agentpp.org
> http://lists.agentpp.org/mailman/listinfo/snmp4j
>





More information about the SNMP4J mailing list