<> <> <<>> DIRECTORY Arpa USING [Address], ArpaICMPBuf USING [Buffer] ; ArpaICMP: CEDAR DEFINITIONS ~ { <> <> <> <> <> Address: TYPE ~ Arpa.Address; Buffer: TYPE ~ ArpaICMPBuf.Buffer; Handle: TYPE ~ REF Object; Object: TYPE; <> nullID: CARD16 ~ CARD16.LAST; CreateHandle: PROC [id: CARD16 _ nullID] RETURNS [h: Handle]; <> Kick: PROC [h: Handle]; <> DestroyHandle: PROC [h: Handle]; <> <> <> AllocBuffer: PROC [h: Handle] RETURNS [b: Buffer]; <> <> SetBodyBytes: PROC [b: Buffer, bodyBytes: CARDINAL, optionsBytes: CARDINAL _ 0]; <> <> Send: PROC [h: Handle, b: Buffer, address: Address]; <> <> <> <> <> waitForever: CARD ~ CARD.LAST; dontWait: CARD ~ 0; Receive: PROC [h: Handle, timeoutMsec: CARD _ waitForever] RETURNS [b: Buffer]; <> GetBodyBytes: PROC [b: Buffer] RETURNS [bodyBytes: CARDINAL, optionsBytes: CARDINAL]; <> <> GetSource: PROC [b: Buffer] RETURNS [Address]; <> <<>> FreeBuffer: PROC [h: Handle, b: Buffer]; <> <> <> Error: ERROR [code: ATOM]; <> <<$HandleDestroyed : can't send or receive after destroy>> <> }...