<> <> DIRECTORY CHOpsP2V3 USING [Authenticator], CrRPC USING [BulkDataCheckAbortProc, Handle], IO USING [STREAM], Rope USING [ROPE], XNS USING [Host], XNSCH USING [Conversation, Element] ; XNSCHPrivate: CEDAR DEFINITIONS ~ { OPEN CHOps: CHOpsP2V3; <> CARD16: TYPE ~ CARDINAL; -- Temporary until Mimosa ???? ROPE: TYPE ~ Rope.ROPE; Element: TYPE ~ XNSCH.Element; Conversation: TYPE ~ XNSCH.Conversation; <> GetAuthenticator: PROC [c: XNSCH.Conversation, host: XNS.Host] RETURNS [CHOps.Authenticator]; IsGeneric: PROC [c: XNSCH.Conversation] RETURNS [BOOL]; <> BulkDataValueProc: TYPE ~ PROC [stream: IO.STREAM] RETURNS [abort: BOOL _ FALSE]; <> ReadBulkDataStream: PROC [h: CrRPC.Handle, stream: IO.STREAM, checkAbort: CrRPC.BulkDataCheckAbortProc, readValue: BulkDataValueProc] RETURNS [abort: BOOL]; WriteSegment: PROC [h: CrRPC.Handle, stream: IO.STREAM, checkAbort: CrRPC.BulkDataCheckAbortProc, writeValue: BulkDataValueProc, n: CARDINAL _ 1] RETURNS [abort: BOOL, heAborted: BOOL]; <> < 0 then write the header of a streamOfT element of type nextSegment with count n; then call the BulkDataValueProc n times to fill in the data.>> <> <> <<>> ReadCard16: PROC [stream: IO.STREAM] RETURNS [CARD16]; ReadRope: PROC [stream: IO.STREAM] RETURNS [rope: ROPE]; ReadElement: PROC [stream: IO.STREAM] RETURNS [element: Element]; ReadOrganization: PROC [stream: IO.STREAM] RETURNS [element: Element]; <> ReadDomain: PROC [stream: IO.STREAM] RETURNS [element: Element]; <> WriteCard16: PROC [stream: IO.STREAM, card16: CARD16]; WriteRope: PROC [stream: IO.STREAM, rope: ROPE]; WriteElement: PROC [stream: IO.STREAM, element: Element]; <> RemoteProc: TYPE ~ PROC[handle: CrRPC.Handle, host: XNS.Host]; CallRemote: PROC [c: Conversation, proc: RemoteProc, domain: ROPE _ NIL, idempotent: BOOL _ TRUE]; }...