XNSServerLocation.mesa
Copyright Ó 1989, 1992 by Xerox Corporation. All rights reserved.
Demers, December 19, 1986 7:05:41 pm PST
Tim Diebert: November 21, 1989 9:59:17 am PST
DIRECTORY
XNS USING [Address, broadcastNet, Net, Socket];
XNSServerLocation: CEDAR DEFINITIONS
~ {
EachAddressProc: TYPE ~ PROC [addr: XNS.Address];
StopBroadcast: ERROR;
LocateServers: PROC [
remotePgm: CARD,  -- Courier program number
remotePgmVersion: CARDINAL, -- Courier program version number
eachAddress: EachAddressProc, -- called w/addr of each responding server
socket: XNS.Socket,  -- destination socket for broadcast
net: XNS.Net ¬ XNS.broadcastNet, -- can direct to specific net if desired
maxHops: CARDINAL ¬ 3,  -- max radius, if broadcast
tryLimit: CARDINAL ¬ 0  -- don't try more than this; 0 => infinity
];
Locate servers by expanding-ring broadcast. The best address (fewest hops) of each responding server is passed to the callback eachAddress, which can terminate the broadcast by raising an ERROR to be caught by the caller of LocateServers, or by raising StopBroadcast[], which will be caught by LocateServers.
}.