<<>> <> <> <> DIRECTORY Atom, Rope, SunRPC, SunRPCAuth; LocalRegistry: CEDAR DEFINITIONS ~ { ROPE: TYPE ~ Rope.ROPE; program: CARD ~ 390920; programVersion: CARD ~ 1; Handle: TYPE ~ SunRPC.Handle; Conversation: TYPE ~ SunRPCAuth.Conversation; Milliseconds: TYPE ~ INT; ServiceHandle: TYPE ~ ARRAY [0..2] OF INT; Generation: TYPE ~ CARD; PropList: TYPE ~ Atom.PropList; --each key is an ATOM, each val is a ROPE Registration: TYPE ~ RECORD [ name: ROPE, msToLive: Milliseconds, value: PropList]; ResultCode: TYPE ~ {success, staleHandle, differentGeneration, otherFailure}; null: CARD ~ 0; NullProc: TYPE ~ PROC [h: Handle, c: Conversation]; register: CARD ~ 1; RegisterProc: TYPE ~ PROC [h: Handle, c: Conversation, reg: Registration, gen: Generation] RETURNS [rcode: ResultCode, sh: ServiceHandle--meaningful only if rcode=success--]; <> refresh: CARD ~ 2; RefreshProc: TYPE ~ PROC [h: Handle, c: Conversation, sh: ServiceHandle, msToLive: Milliseconds] RETURNS [ResultCode]; getNames: CARD ~ 3; GetNamesProc: TYPE ~ PROC [h: Handle, c: Conversation, NoteName: PROC [ROPE]] RETURNS [ResultCode]; getHandles: CARD ~ 4; GetHandlesProc: TYPE ~ PROC [h: Handle, c: Conversation, name: ROPE, NoteHandle: PROC [ServiceHandle]] RETURNS [rcode: ResultCode, gen: Generation--only meaningful if rcode=success--]; <> getRegistration: CARD ~ 5; GetRegistrationProc: TYPE ~ PROC [h: Handle, c: Conversation, sh: ServiceHandle] RETURNS [rcode: ResultCode, reg: Registration--only meaningful if rcode=success--]; Error: ERROR; }.