On Tue, 2005-09-13 at 12:22 -0400, Robert Story wrote:
> On Tue, 13 Sep 2005 13:32:39 +0100 Dave wrote:
> DS> Robert and I have been suggesting different forms of how to represent
> DS> the requested service - either a string-based token ("snmpd:receive")
> DS> or an integer ID (which happens to be the same as the default UDP
> DS> port number).
>
> I like the strings because it's easier to extend,
> and users can define their own.
I've been thinking about this all morning (in between
dealing with a dead disk in the main staff fileserver!).
And I really can't see how you come to that conclusion.
AFAICS, the necessary code is almost identical, regardless
of the syntax of the identifying token. Setting the library
up to support a new service would involve code such as
the following:
netsnmp_register_service( MY_SERVICE, "udp:", "12345" );
netsnmp_register_service( MY_SERVICE, "unix:", "/var/my/service" );
netsnmp_register_service( MY_SERVICE, "osi:", "myserv-l" );
netsnmp_register_service( MY_SERVICE, "nbp:", "My Service" );
and opening a connection to this service would be
either
netsnmp_open_session( "localhost", MY_SERVICE );
or
netsnmp_open_session( MY_SERVICE, 0, "localhost", 0, 0 );
(depending on the style of the open_session call).
This code is essentially identical, regardless of whether
the service identifier was defined using:
#define MY_SERVICE "my:service"
or
#define MY_SERVICE 6789
(with corresponding implications for the API prototypes).
In what way does using a string tag make this "easier to extend"
than with a numeric one? What prevents a user from "defining
their own" new numeric tokens?
OK - a given application would probably be limited to 2^32
different services (including the default ones hard-wired
into the library). While a string-based approach would
allow a practically unlimited number. But I'm not convinced
this is a particularly significant limitation :-)
There's not really much to choose between the two approaches.
IMO, the numeric style has two (relatively minor) advantages:
a) Numeric comparisons are more efficient than
string-based ones (so there'd be slightly less
overhead involved in looking up which port to use)
b) If the numeric MY_SERVICE identifier were defined as
#define MY_SERVICE 12345
(i.e. using the same numeric value as the default UDP
port) then the first ("udp:") registration call would
not be necessary. But that's a useful optimisation,
rather than a core part of using a numeric identifier.
Can you give me an example of some scenario where using a
string-based tag provides functionality which a numeric
identifier could not?
Dave
-------------------------------------------------------
SF.Net email is sponsored by:
Tame your development challenges with Apache's Geronimo App Server.
Download it for free - -and be entered to win a 42" plasma tv or your very
own Sony(tm)PSP. Click here to play: http://sourceforge.net/geronimo.php
_______________________________________________
Net-snmp-coders mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/net-snmp-coders