-- File: IFSFile.mesa
-- Last edited by:
-- Levin - 14-Sep-81 13:43:20
IFSFile: DEFINITIONS =
BEGIN
-- Types --
FSInstance: TYPE = LONG POINTER TO FSObject;
FSObject: TYPE;
FileHandle: TYPE = LONG POINTER TO FileObject;
FileObject: TYPE;
OpenOptions: TYPE = {old, oldReadOnly, new, oldOrNew};
Buffer: TYPE = LONG POINTER;
Position: TYPE = LONG CARDINAL;
ByteCount: TYPE = CARDINAL;
Completer: TYPE = PROCEDURE [arg: CompleterArg, outcome: Problem];
CompleterArg: TYPE = LONG UNSPECIFIED;
Problem: TYPE = {ok, io, resources, credentials, illegalIO, other};
AccessFailure: TYPE =
{ok, io, notFound, alreadyExists, accessDenied, accessConflict, illegalFileName, other};
FileTime: TYPE = LONG CARDINAL;
defaultTime: FileTime = 0;
-- Procedures and Signals --
Error: ERROR [reason: Problem];
Login: PROCEDURE [server, userName, password,
secondaryName, secondaryPassword: LONG STRING ← NIL] RETURNS [FSInstance];
UnableToLogin: ERROR [reason: Problem];
Logout: PROCEDURE [FSInstance];
Open: PROCEDURE [instance: FSInstance, name: LONG STRING, options: OpenOptions ← oldReadOnly]
RETURNS [FileHandle];
CantOpen: ERROR [reason: AccessFailure];
Close: PROCEDURE [FileHandle];
Abandon: PROCEDURE [FileHandle];
Destroy: PROCEDURE [FileHandle];
GetLength: PROCEDURE [FileHandle] RETURNS [Position];
SetLength: PROCEDURE [FileHandle, Position];
StartRead: PROCEDURE [FileHandle, Position, ByteCount, Buffer, Completer, CompleterArg];
StartWrite: PROCEDURE [FileHandle, Position, ByteCount, Buffer, Completer, CompleterArg];
GetTimes: PROCEDURE [FileHandle] RETURNS [read, write, create: FileTime];
SetCreation: PROCEDURE [FileHandle, FileTime ← defaultTime];
-- Initialization/Finalization Procedures --
Initialize: PROCEDURE;
Finalize: PROCEDURE;
END.