Provided by: tcllib_1.21+dfsg-1_all 

NAME
nns_intro - Name service facility, introduction
DESCRIPTION
nns (short for nano nameservice) is a facility built for the package comm, adding a simple name service
to it. It is also built on top of comm, using it for the exchange of messages between the client and
server parts.
This name service facility has nothing to do with the Internet's Domain Name System, otherwise known as
DNS. If the reader is looking for a package dealing with that please see either of the packages dns and
resolv, both found in Tcllib too.
Tcllib provides 2 applications and 4 packages which are working together and provide access to the
facility at different levels.
APPLICATIONS
The application nnsd provides a simple name server which can be run by anybody anywhere on their system,
as they see fit. It is also an example on the use of the server-side package nameserv::server.
Complementing this server is the nns client application. A possible, but no very sensible use would be
to enter name/port bindings into a server from a shell script. Not sensible, as shell scripts normally do
not provide a comm-based service.
The only case for this to make some sense would be in a shell script wrapped around a Tcl script FOO
which is using comm, to register the listening port used by FOO. However even there it would much more
sensible to extend FOO to use the nameservice directly. And in regard on how to that nns can be used as
both example and template. Beyond that it may also be useful to perform nameservice queries from shell
scripts.
The third application, nnslog is a stripped down form of the nns client application. It is reduced to
perform a continuous search for all changes and logs all received events to stdout.
Both clients use the nameserv::auto package to automatically hande the loss and restoration of the
connection to the server.
PACKAGES
The two main packages implementing the service are nameserv and nameserv::server, i.e. client and server.
The latter has not much of an API, just enough to start, stop, and configure it. See the application nnsd
on how to use it.
The basic client, in package nameserv, provides the main API to manipulate and query the service. An
example of its use is the application nns.
The second client package, nameserv::auto is API compatible to the basic client, but provides the
additional functionality that it will automatically restore data like bound names when the connection to
the name service was lost and then reestablished. I.e. it automatically detects the loss of the server
and re-enters the data when the server comes back.
The package nameserv::common is of no interest to users. It is an internal package containing code and
definitions common to the packages nameserv and nameserv::server.
All packages use the uevent package for the reporting of special circumstances via events, and reserve
the uevent-tag nameserv for their exclusive use. All their events will be posted to that tag.
INTERNALS
The document Name service facility, client/server protocol specifies the protocol used by the packages
nameserv and nameserv::server to talk to each other. It is of no interest to users of either the packages
or applications.
Developers wishing to modify and/or extend or to just understand the internals of the nameservice
facility however are strongly advised to read it.
BUGS, IDEAS, FEEDBACK
This document, and the package it describes, will undoubtedly contain bugs and other problems. Please
report such in the category nameserv of the Tcllib Trackers [http://core.tcl.tk/tcllib/reportlist].
Please also report any ideas for enhancements you may have for either package and/or documentation.
When proposing code changes, please provide unified diffs, i.e the output of diff -u.
Note further that attachments are strongly preferred over inlined patches. Attachments can be made by
going to the Edit form of the ticket immediately after its creation, and then using the left-most button
in the secondary navigation bar.
SEE ALSO
nameserv(3tcl), nameserv::auto(3tcl), nameserv::common(3tcl), nameserv::protocol(3tcl),
nameserv::server(3tcl), nnsd(3tcl), nss(3tcl)
KEYWORDS
client, name service, server
CATEGORY
Networking
COPYRIGHT
Copyright (c) 2008 Andreas Kupries <andreas_kupries@users.sourceforge.net>
tcllib 1.0 nns_intro(3tcl)