DIRECTORY Rope USING [ROPE]; FSPseudoServers: CEDAR DEFINITIONS = BEGIN ROPE: TYPE = Rope.ROPE; PseudoServerList: TYPE = LIST OF PseudoServerRep; PseudoServerRep: TYPE = RECORD [ server: ROPE, avoidCheck: BOOL, write: ROPE, read: LIST OF ROPE]; GetPseudoServers: PROC RETURNS [PseudoServerList]; SetPseudoServers: PROC [list: PseudoServerList]; TranslateForWrite: PROC [server: ROPE] RETURNS [ROPE]; TranslateForRead: PROC [server: ROPE] RETURNS [LIST OF ROPE]; AvoidRemoteCheck: PROC [server: ROPE] RETURNS [BOOL]; Lookup: PROC [server: ROPE] RETURNS [PseudoServerList]; DeletePseudoServer: PROC [server: ROPE] RETURNS [PseudoServerList]; InsertPseudoServer: PROC [new: PseudoServerList]; PseudoServerFromRope: PROC [rope: ROPE] RETURNS [error: ROPE, new: PseudoServerList]; RopeFromPseudoServer: PROC [list: PseudoServerList] RETURNS [ROPE]; END. ¨FSPseudoServers.mesa Copyright c 1984, 1985 by Xerox Corporation. All rights reserved. Russ Atkinson, February 4, 1985 4:55:18 pm PST These definitions allow access to the pseudo-server facility of FS. Simply stated, this facility allows a given server name to be turned into a list of server names, thereby allowing a simple, but effective, form of file replication for read-only files. This facility is especially intended to be used for the Cedar release, although it is not limited to that function. Note: all server names must be given without brackets both as arguments and as elements of a PseudoServerList. Translates the server name into the server name specified for writing. If no such translation is present, returns the original server name. Translates the server name into the server names specified for reading. If no such translation is present, returns a list containing the original server name. Determines if the server name implies not checking for remote versions. This is useful to reduce server traffic in cases where the files are known to be frozen. ... returns the PseudoServerList for the given name (NIL if no such translation). ... deletes the given pseudo server (if any) from the root PseudoServerList, and returns the deleted element from the list (NIL if no such element). ... inserts the first item in the PseudoServerList into the root PseudoServerList. ... parses the given line into a new single element PseudoServerList. If error = NIL, then new # NIL, and is the new pseudo server entry. If error # NIL, then new = NIL. ... turns the first entry in the PseudoServerList into a rope parsable by PseudoServerFromRope. If list = NIL, NIL is returned. ΚK˜codešœ™Kšœ Οmœ7™BKšœ.™.—K˜K™σK˜KšΟk œžœžœ˜K˜šœžœž œž˜*K˜Kšžœžœžœ˜Kšœžœžœžœ˜1šœžœžœ˜ Kšœžœ˜ Kšœ žœ˜Kšœžœ˜ Kšœžœžœžœ˜K˜Kšœn™nK˜——KšΟnœžœžœ˜2K˜KšŸœžœ˜0K˜š Ÿœžœ žœžœžœ˜6KšœŒ™Œ—K˜šŸœžœ žœžœžœžœžœ˜=KšœŸ™ŸK™—š Ÿœžœ žœžœžœ˜5Kšœ‘™‘—K˜šŸœžœ žœžœ˜7KšœQ™QK™—šŸœžœ žœžœ˜CKšœ|žœ™”K˜—šŸœžœ˜1KšœR™RK˜—š Ÿœžœžœžœ žœ˜UKš œRžœ žœ2žœ žœ™«K˜—šŸœžœžœžœ˜CKšœkžœžœ ™€K˜—Kšžœ˜K˜K˜—…—b U