nameserv::auto -
Name service facility, Client Extension
package require Tcl 8.4
package require nameserv::auto ? 0.3 ?
package require nameserv
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.
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.
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.
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.
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.
This document, and the package it describes, will undoubtedly contain
bugs and other problems.
Please report such in the category
nameserv of the
http://sourceforge.net/tracker/?group_id=12883.
Please also report any ideas for enhancements you may have for either
package and/or documentation.
nameserv(n)
name service, client, restore, reconnect, automatic