<> <> <> <> 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 <> 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; <> <> Make: PROCEDURE [ local, remote: NSAddress.NetworkAddress, localConnID, remoteConnID: OISCPTypes.ConnectionID, establishConnection: BOOLEAN, timeout: WaitTime _ defaultWaitTime, classOfService: ClassOfService] RETURNS [Handle]; Destroy: PROCEDURE [Handle]; <> 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; <> 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]; <> 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.