SunYP.mesa
Copyright Ó 1991 by Xerox Corporation. All rights reserved.
Demers, September 20, 1987 12:24:04 pm PDT
DIRECTORY
Rope USING [ROPE],
SunRPC USING [Handle],
SunRPCAuth USING [Conversation]
;
SunYP: CEDAR DEFINITIONS
~ {
Constants
program: CARD ~ 100004;
programVersion: CARD ~ 2;
Parameters
maxRecord: CARDINAL ~ 1024;
maxDomain: CARDINAL ~ 64;
maxMap: CARDINAL ~ 64;
maxPeer: CARDINAL ~ 64;
Types
Handle: TYPE ~ SunRPC.Handle;
Conversation: TYPE ~ SunRPCAuth.Conversation;
Status: TYPE ~ MACHINE DEPENDENT {
false(0),
true(1),
nomore(2),
Sun uses negative values; we map negative value x to 1000-x:
nomap(1001),
nodomain(1002),
nokey(1003),
badop(1004),
baddb(1005),
yperr(1006),
badargs(1007),
vers(1008)
};
KeyDatum: TYPE ~ REF TEXT;
ValDatum: TYPE ~ REF TEXT;
DomainName: TYPE ~ Rope.ROPE;
MapName: TYPE ~ Rope.ROPE;
PeerName: TYPE ~ Rope.ROPE;
RequestKey: TYPE ~ RECORD [
domain: DomainName,
map: MapName,
key: KeyDatum
];
RequestNoKey: TYPE ~ RECORD [
domain: DomainName,
map: MapName
];
ResponseVal: TYPE ~ RECORD [
status: Status,
val: ValDatum
];
ResponseKeyVal: TYPE ~ RECORD [
status: Status,
val: ValDatum,
key: KeyDatum
];
EachResponseKeyValProc: TYPE ~ PROC [resp: ResponseKeyVal]
RETURNS [continue: BOOL ¬ TRUE];
ResponseMaster: TYPE ~ RECORD [
status: Status,
master: PeerName
];
ResponseOrder: TYPE ~ RECORD [
status: Status,
ordernum: CARD32
];
EachMapNameProc: TYPE ~ PROC [map: MapName] RETURNS [continue: BOOL ¬ TRUE];
Procedure constants and types
null: CARD ~ 0;
NullProc: TYPE ~ PROC [h: Handle, c: Conversation];
domain: CARD ~ 1;
DomainProc: TYPE ~ PROC [h: Handle, c: Conversation, domain: DomainName]
RETURNS [serves: BOOL];
domainNonack: CARD ~ 2;
DomainNonackProc: TYPE ~ PROC [h: Handle, c: Conversation, domain: DomainName]
RETURNS [serves: BOOL];
match: CARD ~ 3;
MatchProc: TYPE ~ PROC [h: Handle, c: Conversation, req: RequestKey]
RETURNS [resp: ResponseVal];
first: CARD ~ 4;
FirstProc: TYPE ~ PROC [h: Handle, c: Conversation, req: RequestNoKey]
RETURNS [resp: ResponseKeyVal];
next: CARD ~ 5;
NextProc: TYPE ~ PROC [h: Handle, c: Conversation, req: RequestKey]
RETURNS [resp: ResponseKeyVal];
all: CARD ~ 8;
AllProc: TYPE ~ PROC [h: Handle, c: Conversation, req: RequestNoKey, eachResponseKeyVal: EachResponseKeyValProc];
master: CARD ~ 9;
MasterProc: TYPE ~ PROC [h: Handle, c: Conversation, req: RequestNoKey]
RETURNS [resp: ResponseMaster];
order: CARD ~ 10;
OrderProc: TYPE ~ PROC [h: Handle, c: Conversation, req: RequestNoKey]
RETURNS [resp: ResponseOrder];
maplist: CARD ~ 11;
MaplistProc: TYPE ~ PROC [h: Handle, c: Conversation, req: DomainName, eachMapName: EachMapNameProc] RETURNS [status: Status];
}...