-- File: EFTPDefs.mesa,  Last Edit: HGM May 28, 1979  10:41 AM

-- Copyright  Xerox Corporation 1979, 1980

DIRECTORY
  PupTypes: FROM "PupTypes" USING [PupAddress];

EFTPDefs: DEFINITIONS =
BEGIN OPEN PupTypes;
  
-- several places
EFTPTimeOut: SIGNAL;  -- RESUME to keep trying

-- send half
EFTPOpenForSending: PROCEDURE [who: PupAddress, waitForAck: BOOLEAN ← TRUE];
  EFTPAlreadySending: ERROR;
EFTPSendBlock: PROCEDURE [POINTER, CARDINAL];
  EFTPNotSending: ERROR;
  EFTPTroubleSending: ERROR [e: EFTPAbortCode, s: STRING];
EFTPAbortSending: PROCEDURE [STRING];
EFTPFinishSending: PROCEDURE;

-- receive half
EFTPOpenForReceiving: PROCEDURE [PupAddress] RETURNS [PupAddress];
  EFTPAlreadyReceiving: ERROR;
EFTPGetBlock: PROCEDURE [POINTER, CARDINAL] RETURNS [CARDINAL];
  EFTPNotReceiving: ERROR;
  EFTPTroubleReceiving: ERROR [e: EFTPAbortCode, s: STRING];
  EFTPEndReceiving: ERROR;
EFTPAbortReceiving: PROCEDURE [STRING];
EFTPFinishReceiving: PROCEDURE;

EFTPSetRecvTimeout: PROCEDURE [ms: CARDINAL];
EFTPSetSendTimeout: PROCEDURE [ms, tries: CARDINAL];

EFTPAbortCode: TYPE = RECORD [WORD];
  eftpOK: EFTPAbortCode = [0];  -- pseudo code
  eftpExternalSenderAbort: EFTPAbortCode = [1];
  eftpExternalReceiverAbort: EFTPAbortCode = [2];
  eftpReceiverBusyAbort: EFTPAbortCode = [3];
  eftpOutOfSyncAbort: EFTPAbortCode = [4];
  eftpRejected: EFTPAbortCode = [1001];  -- pseudo code

END.