-- PacketStream.mesa (last edited by Garlick on: January 23, 1981 1:49 PM) -- Function: The internal definitions module for Pliot Packet Streams. -- Last Edited by: Levin, June 24, 1983 5:18 pm DIRECTORY BufferDefs USING [BufferAccessHandle, GetFreeBuffer, SppBuffer], OISCPTypes USING [bytesPerPktHeader, bytesPerLevel2SppHeader, ConnectionID], NetworkStream USING [defaultWaitTime, FailureReason, SuspendReason, WaitTime, ClassOfService], NSAddress USING [NetworkAddress]; PacketStream: DEFINITIONS IMPORTS BufferDefs = BEGIN --definitions Handle: TYPE = POINTER TO Object; Object: TYPE = RECORD [ pool: BufferDefs.BufferAccessHandle, put: PROCEDURE [BufferDefs.SppBuffer], get: PROCEDURE RETURNS [BufferDefs.SppBuffer], waitForAttention: PROCEDURE RETURNS [BufferDefs.SppBuffer], setWaitTime: PROCEDURE [WaitTime], findAddresses: PROCEDURE RETURNS [local, remote: NSAddress.NetworkAddress], getSenderSizeLimit: PROCEDURE RETURNS [CARDINAL], returnGetSppDataBuffer: PROCEDURE [BufferDefs.SppBuffer]]; Byte: TYPE = [0..256); bytesPerSequencedPktHeader: CARDINAL = OISCPTypes.bytesPerLevel2SppHeader + OISCPTypes.bytesPerPktHeader; WaitTime: TYPE = NetworkStream.WaitTime; ClassOfService: TYPE = NetworkStream.ClassOfService; defaultWaitTime: WaitTime = NetworkStream.defaultWaitTime; infiniteWaitTime: READONLY WaitTime; State: TYPE = { unestablished, activeEstablish, waitEstablish, established, open, terminating, suspended}; SuspendReason: TYPE = NetworkStream.SuspendReason; FailureReason: TYPE = NetworkStream.FailureReason; -- interface -- exported by PacketStreamMgr Make: PROCEDURE [ local, remote: NSAddress.NetworkAddress, localConnID, remoteConnID: OISCPTypes.ConnectionID, establishConnection: BOOLEAN, timeout: WaitTime ← defaultWaitTime, classOfService: ClassOfService] RETURNS [Handle]; Destroy: PROCEDURE [Handle]; -- these are INLINEs in order to make call Pilot procedure calls similar in style. Put: PROCEDURE [psH: Handle, b: BufferDefs.SppBuffer] = INLINE BEGIN psH.put[b]; END; Get: PROCEDURE [psH: Handle] RETURNS [BufferDefs.SppBuffer] = INLINE BEGIN RETURN[psH.get[]]; END; WaitForAttention: PROCEDURE [psH: Handle] RETURNS [BufferDefs.SppBuffer] = INLINE BEGIN RETURN[psH.waitForAttention[]]; END; SetWaitTime: PROCEDURE [psH: Handle, time: WaitTime] = INLINE BEGIN psH.setWaitTime[time]; END; FindAddresses: PROCEDURE [psH: Handle] RETURNS [local, remote: NSAddress.NetworkAddress] = INLINE BEGIN [local, remote] ← psH.findAddresses[]; END; GetSendSppBuffer: PROCEDURE [psH: Handle] RETURNS [BufferDefs.SppBuffer] = INLINE { RETURN[LOOPHOLE[BufferDefs.GetFreeBuffer[oisSpp, psH.pool, send], BufferDefs.SppBuffer]]}; GetSenderSizeLimit: PROCEDURE [psH: Handle] RETURNS [CARDINAL] = INLINE BEGIN RETURN[psH.getSenderSizeLimit[]]; END; ReturnGetSppDataBuffer: PROCEDURE [psH: Handle, b: BufferDefs.SppBuffer] = INLINE BEGIN psH.returnGetSppDataBuffer[b]; END; -- connection table routines InsertIntoConnectionTable: PROCEDURE [ remote: NSAddress.NetworkAddress, remoteConnID: OISCPTypes.ConnectionID]; RemoveFromConnectionTable: PROCEDURE [ remote: NSAddress.NetworkAddress, remoteConnID: OISCPTypes.ConnectionID]; ConnectionAlreadyThere: PROCEDURE [ remote: NSAddress.NetworkAddress, remoteConnID: OISCPTypes.ConnectionID] RETURNS [BOOLEAN]; -- errors and signals ConnectionSuspended: ERROR [why: SuspendReason]; ConnectionFailed: SIGNAL [why: FailureReason]; END. LOG Time: May 9, 1978 12:03 PM By: Dalal Action: created file. Time: January 26, 1980 1:52 PM By: Dalal Action: replaced SPPInternal. Time: BLyon on: April 14, 1980 6:11 PM By: BLyon Action: Uses new level1 and queue level stuff. Time: Garlick on: January 23, 1981 1:49 PM By: BLyon Action: Added type for ClassOfService, added infiniteWaitTime, added classOfService param and defaulted Make procedure, and removed ERROR AttentionTimeout.