GluePruneHacks:
CEDAR
DEFINITIONS = {
ROPE: TYPE = Rope.ROPE;
RopeList: TYPE = LIST OF ROPE;
Conversation: TYPE ~ REF ConversationObject;
ConversationObject: TYPE ~ XNSCHConcreteTypes.ConversationObject;
VerifyList: TYPE = LIST OF VerifyInfo;
VerifyInfo: TYPE = REF VerifyInfoObject;
VerifyInfoObject:
TYPE =
RECORD [
name: ROPE,
correct: RopeList,
incorrect: RopeList,
unverified: RopeList,
ok: BOOL ¬ TRUE
];
Cache: TYPE = REF CacheEntryList;
CacheEntryList: TYPE = LIST OF CacheEntry;
CacheEntry: TYPE = REF CacheEntryObject;
CacheEntryObject:
TYPE =
RECORD [
key: ROPE,
value: RopeList,
ok: BOOL ¬ TRUE,
reason: XNSCH.ErrorCode ¬ unknown
];
EditOperation: TYPE = {noop, addMember, deleteMember, deleteObject};
EditList: TYPE = LIST OF Edit;
Edit: TYPE = REF EditObject;
EditObject:
TYPE =
RECORD [
operation: EditOperation,
name: ROPE,
arguments: RopeList,
okResults: RopeList,
badResults: RopeList
];
AddRopeToList: PROC [rope: ROPE, list: RopeList] RETURNS [RopeList];
DoEdit: PROC [edit: Edit];
DoEdits: PROC [editList: EditList];
DomainsForServer: PROC [server: ROPE] RETURNS [ce: CacheEntry];
DoOneEdit: PROC [op: EditOperation, name, arg: ROPE] RETURNS [ok: BOOL ¬ TRUE, result: ROPE];
EditFromVerifyInfo: PROC [vi: VerifyInfo, op: EditOperation] RETURNS [edit: Edit];
EditListFromVerifyList: PROC [verifyList: VerifyList, op: EditOperation] RETURNS [editList: EditList];
ExposeErrorCode: PROC [arg: XNSCH.ErrorCode] RETURNS [res: ROPE];
FlushDomainsForServerCache: PROC;
FlushServersForDomainCache: PROC;
GoodReason: PROC [reason: XNSCH.ErrorCode] RETURNS [BOOL];
LearnDomainsServed: PROC [chsName: ROPE] RETURNS [domains: RopeList, ok: BOOL ¬ TRUE, reason: XNSCH.ErrorCode];
MapCrRPCError: PROC [er: CrRPC.ErrorReason] RETURNS [XNSCH.ErrorCode];
RopeInList: PROC [rope: ROPE, list: RopeList] RETURNS [BOOL];
RopeToFull: PROC [name: ROPE] RETURNS [rope: ROPE, nsName: XNSCH.Name, ok: BOOL ¬ TRUE];
ServerServesDomain: PROC [server, domain: ROPE] RETURNS [yes: BOOL, ce: CacheEntry];
ServersForDomain: PROC [domain: ROPE] RETURNS [ce: CacheEntry];
SetServerToAsk: PROC [server: ROPE ¬ NIL];
VerifyDomainsForServer: PROC [server: ROPE] RETURNS [vi: VerifyInfo ¬ NEW[VerifyInfoObject]];
VerifyDomainsForServersList: PROC [servers: RopeList] RETURNS [list: LIST OF VerifyInfo];
VerifyServersForDomain: PROC [domain: ROPE] RETURNS [vi: VerifyInfo ¬ NEW[VerifyInfoObject]];
VerifyServersForDomainsList: PROC [domains: RopeList] RETURNS [list: LIST OF VerifyInfo];
}.