<> <> <> DIRECTORY Rope USING [ROPE], PupTypes USING [PupAddress]; EFTPDefs: DEFINITIONS = BEGIN OPEN PupTypes; <> EFTPTimeOut: SIGNAL; -- RESUME to keep trying <> EFTPOpenForSending: PROCEDURE [who: PupAddress, waitForAck: BOOLEAN _ TRUE]; EFTPAlreadySending: ERROR; EFTPSendBlock: PROCEDURE [LONG POINTER, CARDINAL]; EFTPNotSending: ERROR; EFTPTroubleSending: ERROR [e: EFTPAbortCode, s: Rope.ROPE]; EFTPAbortSending: PROCEDURE [STRING]; EFTPFinishSending: PROCEDURE; <> EFTPOpenForReceiving: PROCEDURE [PupAddress] RETURNS [PupAddress]; EFTPAlreadyReceiving: ERROR; EFTPGetBlock: PROCEDURE [LONG POINTER, CARDINAL] RETURNS [CARDINAL]; EFTPNotReceiving: ERROR; EFTPTroubleReceiving: ERROR [e: EFTPAbortCode, s: Rope.ROPE]; EFTPEndReceiving: ERROR; EFTPAbortReceiving: PROCEDURE [STRING]; EFTPFinishReceiving: PROCEDURE; EFTPSetRecvTimeout: PROCEDURE [ms: CARDINAL]; EFTPSetSendTimeout: PROCEDURE [ms, tries: CARDINAL]; EFTPAbortCode: TYPE = MACHINE DEPENDENT{ eftpOK(0), -- pseudo code eftpExternalSenderAbort(1), eftpExternalReceiverAbort(2), eftpReceiverBusyAbort(3), eftpOutOfSyncAbort(4), eftpRejected(1001)}; <> END.