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 Demers, December 19, 1986 7:05:41 pm 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. ΚΣ˜™J™(—J˜codešΟk ˜ Kšœœ&˜/K˜—šΟnœœ ˜$K˜Kšœœœœ ˜1Kšž œœ˜K˜š ž œœœΟcœœŸ"œŸ+œœ Ÿ$œœœŸ)œ œŸœ œŸ+œ˜ΕKšœLŸœ]žœr™΅—K˜——…—xΗ