-- Transport Mechanism - public DEFS for info about other servers -- -- [juniper]MS>ServerDefs.mesa -- Andrew Birrell 4-Aug-80 18:02:03 -- DIRECTORY BodyDefs USING[ RName ], HeapDefs USING[ WriterHandle ], PupTypes USING[ PupAddress ]; ServerDefs: DEFINITIONS = BEGIN ServerName: TYPE = RECORD[ SELECT type:* FROM rName => [value: BodyDefs.RName], connect => [value: STRING], netAddr => [value: PupTypes.PupAddress], ENDCASE ]; ServerHandle: TYPE = POINTER TO ServerData; ServerData: TYPE = MONITORED RECORD[ next: PRIVATE ServerHandle, name: ServerName, up: PRIVATE BOOLEAN, inUse: PRIVATE BOOLEAN, addrKnown: PRIVATE BOOLEAN, type: ServerType, addr: PRIVATE PupTypes.PupAddress, SL: HeapDefs.WriterHandle ]; -- The "SL" field is initialised to NIL by the -- "ServerAlloc" module, and is accessed and altered -- only by the "ReadInput" module. All other fields are -- initialised, accessed and altered only by the -- "ServerInfo" and "ServerAlloc" modules. ServerType: TYPE = {mail,--MTP--foreign}; GetServer: PROCEDURE[name: ServerName, type: ServerType] RETURNS[ ServerHandle ]; -- creates ServerData if necessary. The name may -- define the server by R-Name, by connect site, -- or by net address (including socket). Several -- ServerHandle's, defined by different names, may map -- to the same net address. -- EnumerateAll: PROCEDURE[ work: PROCEDURE[ServerHandle] ]; -- enumerates all servers -- ServerUp: PROCEDURE[ handle: ServerHandle ] RETURNS[ BOOLEAN ]; -- known state of the server -- UpServer: PROCEDURE[ handle: ServerHandle ]; -- notification that server is believed to be up. -- DownServer: PROCEDURE[ handle: ServerHandle ]; -- notification that server is believed to be down. -- Also ceases to cache the server's net address. -- ServerAddr: PROCEDURE[ handle: ServerHandle ] RETURNS[ PupTypes.PupAddress ]; -- the probable address of the server. May signal -- NoSuchServer or ServerNotUp -- ServerIsLocal: PROCEDURE[ handle: ServerHandle ] RETURNS[ BOOLEAN ]; -- Returns whether the present address of the server -- is the local host -- NoSuchServer: ERROR; -- Raised by ServerAddr if the server cannot be located. -- The server is now believed to be down. -- ServerNotUp: ERROR; -- Raised by ServerAddr if no route exists to the -- server. The server is now believed to be down. -- END.