<> <> <> <<>> <<>> DIRECTORY CrRPC USING [BeginErrorProc, BeginRejectProc, BeginReturnProc, ClientProcs, Handle, HandleClass, MarshallProcs, ServerProc], Endian USING [BYTE, bytesPerHWord, FWORD, HWORD], XNS USING [Address, Host, Net, Socket]; CrRPCFriends: CEDAR DEFINITIONS ~ { OPEN CrRPC; <> <> <> CARD: TYPE ~ LONG CARDINAL; BYTE: TYPE ~ Endian.BYTE; FWORD: TYPE ~ Endian.FWORD; HWORD: TYPE ~ Endian.HWORD; bytesPerWord: CARDINAL ~ Endian.bytesPerHWord; <> courierVersionNum: CARDINAL ~ 3; <
> SessionHdr: TYPE ~ MACHINE DEPENDENT RECORD [ lowVersion: HWORD, highVersion: HWORD ]; sessionHdrBytes: CARDINAL ~ SIZE[SessionHdr]*bytesPerWord; -- should be BYTES sessionHdrHWords: CARDINAL ~ SIZE[SessionHdr]; <
> MsgHdr: TYPE ~ MACHINE DEPENDENT RECORD [ msgType: HWORD ]; callMsgType: CARDINAL ~ 0; rejectMsgType: CARDINAL ~ 1; returnMsgType: CARDINAL ~ 2; abortMsgType: CARDINAL ~ 3; msgHdrBytes: CARDINAL ~ SIZE[MsgHdr]*bytesPerWord; -- should be BYTES msgHdrHWords: CARDINAL ~ SIZE[MsgHdr]; <
> CallHdr: TYPE ~ MACHINE DEPENDENT RECORD [ tID: HWORD, pgmNum: FWORD, pgmVersion: HWORD, procNum: HWORD ]; callHdrBytes: CARDINAL ~ SIZE[CallHdr]*bytesPerWord; -- should be BYTES callHdrHWords: CARDINAL ~ SIZE[CallHdr]; <> <
> RejectHdr: TYPE ~ MACHINE DEPENDENT RECORD [ tID: HWORD, rejectReason: HWORD -- noSuchProgram(0), noSuchVersion(1), noSuchProcedure(2), invalidArgument(3), unspecifiedReject(ffffH), ]; <> <> rejectHdrBytes: CARDINAL ~ SIZE[RejectHdr]*bytesPerWord; -- should be BYTES rejectHdrHWords: CARDINAL ~ SIZE[RejectHdr]; <> RejectBody: TYPE ~ MACHINE DEPENDENT RECORD [ SELECT OVERLAID * FROM noSuchProgram => [], noSuchVersion => [ lowPgmVersion: HWORD, highPgmVersion: HWORD], noSuchProcedure => [], invalidArgument => [], unspecifiedReject => [] ENDCASE ]; <
> ReturnHdr: TYPE ~ MACHINE DEPENDENT RECORD [ tID: HWORD ]; returnHdrBytes: CARDINAL ~ SIZE[ReturnHdr]*bytesPerWord; -- should be BYTES returnHdrHWords: CARDINAL ~ SIZE[ReturnHdr]; <> <
> AbortHdr: TYPE ~ MACHINE DEPENDENT RECORD [ tID: HWORD, errNum: HWORD ]; abortHdrBytes: CARDINAL ~ SIZE[AbortHdr]*bytesPerWord; -- should be BYTES abortHdrHWords: CARDINAL ~ SIZE[AbortHdr]; <> <> BulkDataDescriptorType: TYPE ~ MACHINE DEPENDENT { null(0), immediate(1), passive(2), active(3) }; BulkDataXferID: TYPE ~ RECORD [ host: XNS.Host, hostRelativeXferID: ARRAY [0..2) OF CARDINAL]; BulkDataDescriptor: TYPE ~ RECORD [ SELECT type: BulkDataDescriptorType FROM null => [], immediate => [], passive, active => [ network: XNS.Net, host: XNS.Host, identifier: BulkDataXferID] ENDCASE ]; <> CreateClientHandleProc: TYPE ~ PROC [ remote: XNS.Address, timeoutMsec: INT ] RETURNS [Handle]; <> RegisterCreateClientHandleProc: PROC [ class: HandleClass, proc: CreateClientHandleProc]; <> NewClientObject: PROC [class: HandleClass, marshallProcs: REF MarshallProcs, procs: REF ClientProcs, data: REF ANY _ NIL, clientData: REF ANY _ NIL] RETURNS [Handle]; <> <> CreateListenerProc: TYPE ~ PROC [socket: XNS.Socket]; <> RegisterCreateListenerProc: PROC [ class: HandleClass, createListenerProc: CreateListenerProc]; LookUpServerProc: PROC [pgm: CARD, pgmVersion: CARDINAL] RETURNS [serverProc: ServerProc]; <> }.