[SNMP4J] API wish
Frank Fock
fock at agentpp.com
Wed Mar 16 23:41:08 CET 2005
Mathias,
comments inline:
Mathias Bogaert wrote:
>
> On 16 Mar 2005, at 23:15, Frank Fock wrote:
>
>> 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
>
>
> I don't see what advantage putting it in ResponseEvent would have. I'm
> not sure if I still like the resultset idea, I'll think about it more.
>
It would keep the interface of PDU minimal. The ResultSet like interface
will introduce
a couple of methods that I would rather put in external classes like
ResponseEvent
than in a core class like PDU. BTW, putting it in the PDU class would
then also require
set methods for symmetrical reasons.
>> object. I wonder why you use Java native classes like Integer and Long?
>
>
> If I would use primitives, how can I then differentiate between a
> returned zero value or NULL? With wrapper classes like Integer and
> Long this is possible. This way, also my data store can contain NULL.
>
Understood. I wondered why not using the SNMP4J types from the
org.snmp4j.smi package?
>> 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.
>
>
> IUserTarget? I would'nt introduce C(++) type naming into the nicely
> designed SNMP4J. Just name it UserTarget and CommunityTarget
>
I wouldn't have named them following the I convention. I was just an
abbreviation.
However naming the interface like the current classes would break
existing code,
which I want to avoid. May be someone has a good idea to fix this naming
issue?
>> 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.
>
>
> Excellent.
>
>>
>> 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