-- Transport Mechanism - DEFS for location of server by client --

-- [Juniper]<DMS>MS>LocateDefs.mesa

-- Andrew Birrell 14-Aug-80 12:06:21 --

DIRECTORY
BodyDefs USING [RName],
PupDefs USING [PupAddress];

LocateDefs: DEFINITIONS =
BEGIN

FoundState: TYPE = {allDown, notFound, found};

FoundServerInfo: TYPE = RECORD [
SELECT t: FoundState FROM
allDown => NULL,
notFound => NULL,
found => [where: PupDefs.PupAddress],
ENDCASE];

FindNearestServer: PROCEDURE [
list: BodyDefs.RName,
accept: PROCEDURE [PupDefs.PupAddress] RETURNS [BOOLEAN]]
RETURNS [FoundServerInfo];

FindLocalServer: PROCEDURE [list, local: BodyDefs.RName] RETURNS [FoundState];

FindRegServer: PROCEDURE [
who: BodyDefs.RName, accept: PROCEDURE [PupDefs.PupAddress] RETURNS [BOOLEAN]]
RETURNS [FoundServerInfo];

AcceptFirst: PROC [PupDefs.PupAddress] RETURNS [BOOLEAN];
-- returns TRUE --

END.