<> <> <<>> DIRECTORY ArpaBuf USING [Protocol], CommDriver USING [Buffer], Rope USING [ROPE] ; ArpaIP: CEDAR DEFINITIONS ~ { <> Handle: TYPE ~ REF Object; Object: TYPE; Buffer: TYPE ~ CommDriver.Buffer; <> Buffers: TYPE ~ CommDriver.Buffer; <> RouteHint: TYPE ~ REF; <> <> CreateHandle: PROC [protocol: Protocol, recvProc: RecvProc, clientData: REF, acceptLongDatagrams: BOOL _ FALSE] RETURNS [handle: Handle]; <> <> <> DestroyHandle: PROC [handle: Handle]; <> <> <> <> RecvProc: TYPE ~ PROC [b: Buffers, clientData: REF] RETURNS [rB: Buffers]; <> <> <> FreeBuffers: PROC [b: Buffers]; <> GetUserBytes: PROC [b: Buffer] RETURNS [bodyBytes: CARD, optionsBytes: CARD]; <> <> AllocBuffer: PROC RETURNS [Buffer]; <> SetUserBytes: PROC [b: Buffer, bodyBytes: CARD, optionsBytes: CARD _ 0]; <> Send: PROC [h: Handle, b: Buffers, hint: RouteHint _ NIL] RETURNS [newHint: RouteHint]; <> <> <> <> <> <<>> <> FetchOptionAddress: PROC [b: Buffer, pos: CARD] RETURNS [address: Address]; FetchOptionH: PROC [b: Buffer, pos: CARD] RETURNS [value: CARD16]; FetchOptionF: PROC [b: Buffer, pos: CARD] RETURNS [value: CARD32]; StoreOptionAddress: PROC [b: Buffer, pos: CARD, address: Address]; StoreOptionH: PROC [b: Buffer, pos: CARD, value: CARD16]; StoreOptionF: PROC [b: Buffer, pos: CARD, value: CARD32]; <> Error: ERROR [code: ATOM]; <> <<$protocolAlreadyRegistered : we only allow one protocol module per protocol.>> <<$handleDestroyed : you can't send on a handle after calling Destroy.>> <<$longDatagram : attempt to send a long datagram on a handle created with acceptLongDatagrams = FALSE.>> <> }...