-- File: PupStream.Mesa, Last Edit: HGM January 15, 1981 6:36 PM
DIRECTORY
Stream USING [Handle],
PupTypes USING [Pair, PupAddress, PupHostID, PupNetID, PupSocketID];
PupStream: DEFINITIONS =
BEGIN
-- Copied things from PupTypes
PupAddress: TYPE = PupTypes.PupAddress;
PupNetID: TYPE = PupTypes.PupNetID;
PupHostID: TYPE = PupTypes.PupHostID;
PupSocketID: TYPE = PupTypes.PupSocketID;
-- TYPEs
Tocks: TYPE = RECORD [CARDINAL];
veryLongWait: Tocks = [LAST[CARDINAL]];
veryShortWait: Tocks = [0];
PupOpenMode: TYPE = {alreadyOpened, sendRfc, wait};
CloseReason: TYPE = {
localClose, localAbort, remoteClose, noRouteToNetwork, transmissionTimeout, remoteReject};
-- Byte Stream Interface
PupByteStreamCreate: PROCEDURE [remote: PupAddress, ticks: Tocks]
RETURNS [Stream.Handle];
PupByteStreamAbort: PROCEDURE [Stream.Handle, STRING];
-- Listeners
PupListener: TYPE = POINTER TO PupListenerObject;
PupListenerObject: TYPE = RECORD [PROCEDURE];
CreatePupByteStreamListener: PROCEDURE [
local: PupSocketID, proc: PROCEDURE [Stream.Handle, PupAddress],
ticks: Tocks, filter: PROCEDURE [PupAddress] ← DontReject]
RETURNS [PupListener];
DestroyPupListener: PROCEDURE [PupListener];
DontReject: PROCEDURE [PupAddress];
RejectThisRequest: ERROR [error: STRING];
-- Used only by Listeners+Debugging
PupByteStreamMake: PROCEDURE [
local: PupSocketID, remote: PupAddress, ticks: Tocks,
mode: PupOpenMode, id: PupTypes.Pair] RETURNS [Stream.Handle];
-- ERRORs
StreamClosing: ERROR [why: CloseReason, text: STRING];
-- Performance tuning and debugging
-- Call these before creating the connection
SetMaxAllocation: PROCEDURE [CARDINAL];
SetMaxBufferSize: PROCEDURE [CARDINAL];
SetPinging: PROCEDURE [BOOLEAN];
-- Tocks
SecondsToTocks: PROCEDURE [CARDINAL] RETURNS [Tocks];
MsToTocks: PROCEDURE [CARDINAL] RETURNS [Tocks];
-- On/Off
PupPackageMake: PROCEDURE;
PupPackageDestroy: PROCEDURE;
-- NameConversion
GetPupAddress: PROCEDURE [POINTER TO PupAddress, STRING];
PupNameLookup: PROCEDURE [POINTER TO PupAddress, STRING];
NameLookupErrorCode: TYPE = {noRoute, noResponse, errorFromServer}; -- if error
-- ERRORs
PupNameTrouble: ERROR [e: STRING, code: NameLookupErrorCode];
TockConversionTroubles: ERROR;
END.