-- NetworkStream.mesa (last edited by: Garlick on: January 26, 1981 9:55 AM)
DIRECTORY
Stream USING [Handle, SubSequenceType],
System USING [NetworkAddress];
NetworkStream: DEFINITIONS =
BEGIN
-- definitions
-- various types and constants used by Network Stream clients.
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
-- the following apply only to circuit-oriented networks (e.g. phone network)
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 System.NetworkAddress;
ConnectionID: TYPE = RECORD [WORD];
uniqueConnID: ConnectionID = [0];
unknownConnID: ConnectionID = [0];
-- interface
-- exported by NetworkStreamMgr
-- procedures
-- This procedure creates a network stream to the specified remote address.
Create: PROCEDURE [
remote: System.NetworkAddress, timeout: WaitTime ← defaultWaitTime,
classOfService: ClassOfService ← bulk] RETURNS [Stream.Handle];
-- This procedure creates the sequenced packet transducer with all its parameters
CreateTransducer: PROCEDURE [
local, remote: System.NetworkAddress, localConnID, remoteConnID: ConnectionID,
activelyEstablish: BOOLEAN, timeout: WaitTime ← defaultWaitTime,
classOfService: ClassOfService ← bulk] RETURNS [Stream.Handle];
AssignNetworkAddress: PROCEDURE RETURNS [System.NetworkAddress];
FindAddresses: PROCEDURE [sH: Stream.Handle]
RETURNS [local, remote: System.NetworkAddress];
SetWaitTime: PROCEDURE [sH: Stream.Handle, time: WaitTime];
CreateListener: PROCEDURE [addr: System.NetworkAddress]
RETURNS [ListenerHandle];
DeleteListener: PROCEDURE [listenerH: ListenerHandle];
Listen: PROCEDURE [
listenerH: ListenerHandle, listenTimeout: WaitTime ← infiniteWaitTime,
streamTimeout: WaitTime ← infiniteWaitTime,
classOfService: ClassOfService ← bulk] RETURNS [Stream.Handle];
-- errors and signals
ConnectionSuspended: ERROR [why: SuspendReason];
ConnectionFailed: SIGNAL [why: FailureReason];
IllegalAddress: ERROR; -- illegal network address for CreateListener
ListenTimeout: SIGNAL; -- resumeable
-- optional close protocol using subsequence types
-- definitions
CloseStatus: TYPE = {good, noReply, incomplete};
closeSST: Stream.SubSequenceType = 254;
closeReplySST: Stream.SubSequenceType = 255;
-- interface
-- exported by NetworkStreamMgr
-- procedures
Close: PROCEDURE [sH: Stream.Handle] RETURNS [CloseStatus];
CloseReply: PROCEDURE [sH: Stream.Handle] 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 SpecialSystem to System, 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.