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 ]; }. ξ 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 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. Κ •NewlineDelimiter –(cedarcode) style™™Icodešœ Οeœ7™BJ™(K™-—K˜šΟk ˜ Kšžœžœ&˜/K˜—šΟnœžœž ˜$K˜Kšœžœžœžœ ˜1KšŸ œžœ˜K˜š Ÿ œžœžœΟcœžœ !œ *œ žœ  #œžœžœ (œ žœ œ žœ *œ˜ΕKšœL œ]Ÿœr™΅—K˜——…—xp