NAME¶
nameserv::auto - Name service facility, Client Extension
SYNOPSIS¶
package require
Tcl 8.4
package require
nameserv::auto ?0.3?
package require
nameserv
DESCRIPTION¶
Please read the document
Name service facility, introduction first.
This package provides the
exact same API as is provided by package
nameserv, i.e the regular name service client. It differs from the
former by taking measures to ensure that longer-lived data, i.e. bound names,
continuous and unfulfilled async searches, survive the loss of the connection
to the name server as much as is possible.
This means that the bound names and continuous and unfulfilled async searches
are remembered client-side and automatically re-entered into the server when
the connection comes back after its loss. For bound names there is one
important limitation to such restoration: It is possible that a name of this
client was bound by a different client while the connection was gone. Such
names are fully lost, and the best the package can and will do is to inform
the user of this.
API¶
The user-visible API is mainly identical the API of
nameserv and is
therefore not described here. Please read the documentation of
nameserv.
The differences are explained in the sections
OPTIONS and
EVENTS.
OPTIONS¶
This package supports all the option of package
nameserv, and one more.
The additional option allows the user to specifies the time interval between
attempts to restore a lost connection.
- -delay milliseconds
- The value of this option is an integer value > 0 which
specifies the interval to wait between attempts to restore a lost
connection, in milliseconds. The default value is 1000, i.e. one
second.
EVENTS¶
This package generates all of the events of package
nameserv, and two
more. Both events are generated for the tag
nameserv.
- lost-name
- This event is generated when a bound name is truly lost,
i.e. could not be restored after the temporary loss of the connection to
the name server. It indicates that a different client took ownership of
the name while this client was out of contact.
The detail information of the event will be a Tcl dictionary containing two
keys, name, and data. Their values hold all the information
about the lost name.
- re-connection
- This event is generated when the connection to the server
is restored. The remembered data has been restored when the event is
posted.
The event has no detail information.
DESIGN¶
The package is implemented on top of the regular nameservice client, i.e.
package
nameserv. It detects the loss of the connection by listening
for
lost-connection events, on the tag
nameserv.
It reacts to such events by starting a periodic timer and trying to reconnect to
the server whenver this timer triggers. On success the timer is canceled, a
re-connection event generated, and the package proceeds to re-enter the
remembered bound names and continous searches.
Another loss of the connection, be it during or after re-entering the remembered
information simply restarts the timer and subsequent reconnection attempts.
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 SF Trackers [
http://sourceforge.net/tracker/?group_id=12883].
Please also report any ideas for enhancements you may have for either package
and/or documentation.
SEE ALSO¶
nameserv(3tcl)
KEYWORDS¶
automatic, client, name service, reconnect, restore
CATEGORY¶
Networking
COPYRIGHT¶
Copyright (c) 2007-2008 Andreas Kupries <andreas_kupries@users.sourceforge.net>