DIRECTORY Basics USING [BYTE], BasicTime USING [GMT], BufferDefs USING [Buffer, Queue], PrincOps USING [FrameHandle], PupDefs USING [PupBuffer, PupSocket], PupTypes USING [PupType]; SequinPrivate: DEFINITIONS = BEGIN Handle: TYPE = REF SequinRep; SequinRep: TYPE = MONITORED RECORD [ id: SequinID _ [inOut[0, 0]], allocate: BYTE _ 1, retransmitSequence: SequenceNumber _ 0, retransmitQueue: BufferDefs.Queue _ NIL, getQueue: BufferDefs.Queue _ NIL, socket: PupDefs.PupSocket _ NIL, goAhead: CONDITION, buffersToRequeue: BYTE _ 0, pupType: PupTypes.PupType, state: {init, open, destroyed} _ init, broken: BOOL _ FALSE, opened: BOOL _ FALSE, recentRestart, restartRequested: BOOL _ FALSE, pings: PingCount _ 0, lastPacketTime: BasicTime.GMT _ NULL, requeuer: PROC [BufferDefs.Buffer] _ NULL, closure: RequeueClosure _ NULL]; SequinID: TYPE = MACHINE DEPENDENT RECORD [ SELECT OVERLAID * FROM inOut => [inPart: WORD, outPart: WORD], pieces => [allocate: BYTE, receiveSequence: SequenceNumber, control: SequinControl, sendSequence: SequenceNumber], ENDCASE]; SequinControl: TYPE = MACHINE DEPENDENT{ data(0), ack(1), nop(2), restart(3), check(4), open(5), break(6), close(7), closed(8), destroy(9), dallying(10), quit(11), broken(12), retransmit(13), stifle(14), openclose(15), opendestroy(16), (255)}; SequenceNumber: TYPE = BYTE; BYTE: TYPE = Basics.BYTE; Seconds: TYPE = LONG CARDINAL; RequeueClosure: TYPE = PrincOps.FrameHandle; maxPings: CARDINAL = 10; PingCount: TYPE = [0..maxPings]; maxBytes: CARDINAL; maxAllocate: CARDINAL; MakeRequeueClosure: PROC [sequin: Handle] RETURNS [RequeueClosure]; Send: PROC [sequin: Handle, packet: PupDefs.PupBuffer, control: SequinControl]; SocketWarmer: PROC [sequin: Handle]; END. ¸SequinPrivate.mesa Copyright c 1985 by Xerox Corporation. All rights reserved. Levin: 3-Feb-82 9:32:43 Russ Atkinson: March 7, 1985 1:29:57 pm PST Types Variables Procedures ÊϘcodešœ™Kšœ Ïmœ1™