-- File: FTPPupComDefs.mesa,  Last Edit: HGM July 31, 1980  5:48 PM

-- Copyright  Xerox Corporation 1979, 1980

DIRECTORY
  FTPDefs,
  Stream USING [Handle],
  PupStream USING [CloseReason];

FTPPupComDefs: DEFINITIONS =
BEGIN

PupConnection: TYPE = POINTER TO PupConnectionObject;
PupConnectionObject: TYPE = RECORD [
  streamHandle: Stream.Handle,
  thirdPartyClose, inputDiscontinuity, outputDiscontinuity,
  inputDiscontinuityConsumed, terminateOnEndPhysicalRecord: BOOLEAN,
  mark: Byte];

BytePointer: TYPE = FTPDefs.BytePointer;
CommunicationSystem: TYPE = FTPDefs.CommunicationSystem;
Connection: TYPE = FTPDefs.Connection;
Byte: TYPE = FTPDefs.Byte;

SendBytes: PROCEDURE [communicationSystem: CommunicationSystem, connection: Connection, bytePointer: BytePointer];
ReceiveBytes: PUBLIC PROCEDURE [communicationSystem: CommunicationSystem, connection: Connection, bytePointer: BytePointer, settleForLess: BOOLEAN];
SendByte: PROCEDURE [communicationSystem: CommunicationSystem, connection: Connection, byte: Byte];
ReceiveByte: PUBLIC PROCEDURE [communicationSystem: CommunicationSystem, connection: Connection, settleForNone: BOOLEAN] RETURNS [byte: Byte, settledForNone: BOOLEAN];
ProduceDiscontinuity: PROCEDURE [communicationSystem: CommunicationSystem, connection: Connection];
ConsumeDiscontinuity: PROCEDURE [communicationSystem: CommunicationSystem, connection: Connection];
ForceOutput: PROCEDURE [communicationSystem: CommunicationSystem, connection: Connection];

AbortBecauseStreamClosing: PUBLIC PROCEDURE [closeReason: PupStream.CloseReason, message: STRING];

END.