<> <> <> DIRECTORY IO USING [STREAM], NSAddress USING [NetworkAddress]; NetworkStream: DEFINITIONS = BEGIN <> <> WaitTime: TYPE = LONG CARDINAL; -- msecs defaultWaitTime: WaitTime = 60000; -- msecs infiniteWaitTime: READONLY WaitTime; ClassOfService: TYPE = {bulk, transactional}; SuspendReason: TYPE = { notSuspended, transmissionTimeout, noRouteToDestination, remoteReject, remoteServiceDisappeared}; FailureReason: TYPE = { timeout, noRouteToDestination, noServiceAtDestination, -- all media <> noAnswerOrBusy, -- auto-dial case only noTranslationForDestination, -- no phone number for this destination circuitInUse, -- being used to talk to another destination circuitNotReady, -- dial the phone or connect modems (non-auto-dial case) noDialingHardware, dialerHardwareProblem}; ListenerHandle: TYPE [2]; uniqueNetworkAddr: READONLY NSAddress.NetworkAddress; ConnectionID: TYPE = RECORD [WORD]; uniqueConnID: ConnectionID = [0]; unknownConnID: ConnectionID = [0]; <> <> <> <> Create: PROCEDURE [remote: NSAddress.NetworkAddress, timeout: WaitTime _ defaultWaitTime, classOfService: ClassOfService _ bulk] RETURNS [IO.STREAM]; <> CreateTransducer: PROCEDURE [local, remote: NSAddress.NetworkAddress, localConnID, remoteConnID: ConnectionID, activelyEstablish: BOOLEAN, timeout: WaitTime _ defaultWaitTime, classOfService: ClassOfService _ bulk] RETURNS [IO.STREAM]; AssignNetworkAddress: PROCEDURE RETURNS [NSAddress.NetworkAddress]; FindAddresses: PROCEDURE [sH: IO.STREAM] RETURNS [local, remote: NSAddress.NetworkAddress]; SetWaitTime: PROCEDURE [sH: IO.STREAM, time: WaitTime]; CreateListener: PROCEDURE [addr: NSAddress.NetworkAddress] RETURNS [ListenerHandle]; DeleteListener: PROCEDURE [listenerH: ListenerHandle]; Listen: PROCEDURE [listenerH: ListenerHandle, listenTimeout: WaitTime _ infiniteWaitTime, streamTimeout: WaitTime _ infiniteWaitTime, classOfService: ClassOfService _ bulk] RETURNS [IO.STREAM]; <> ConnectionSuspended: ERROR [why: SuspendReason]; ConnectionFailed: SIGNAL [why: FailureReason]; IllegalAddress: ERROR; -- illegal network address for CreateListener ListenTimeout: SIGNAL; -- resumeable <> <> CloseStatus: TYPE = {good, noReply, incomplete}; SubSequenceType: TYPE = [0..256); closeSST: SubSequenceType = 254; closeReplySST: SubSequenceType = 255; <> <> <> Close: PROCEDURE [sH: IO.STREAM] RETURNS [CloseStatus]; CloseReply: PROCEDURE [sH: IO.STREAM] RETURNS [CloseStatus]; END. LOG (trimmed to Teak) Time: January 22, 1980 10:37 PM By: Dalal Action: made ListenerHandle a LONG. Time: January 22, 1980 10:37 PM By: BLyon Action: Changed SpecialNSAddress to NSAddress, ListenerHandle is opaque TYPE, made uniqueNetworkAddress READONLY (from CONSTANT). Time: August 6, 1980 10:21 AM By: Garlick Action: Added several FailureReason's for circuit-oriented networks. Time: October 10, 1980 4:47 PM By: Garlick Action: Added FailureReason noAnswerOrBusy. Time: January 26, 1981 9:55 AM By: Garlick Action: Added FailureReason noServiceAtDestination and SuspendReason remoteServiceDisappeared. Deleted ERROR AttentionTimeout and added SIGNAL ListenTimeout. Made several timeout values default. Added a ClassOfService parameter to Create, CreateTransducer, and Listen. Added infiniteWaitTime.