-- File: FilerImpl.mesa - last edit:
-- BJackson.pa 23-Jun-85 0:07:09
-- Copyright (C) 1985 by Xerox Corporation. All rights reserved.
DIRECTORY
FileName USING [AllocVFN, FreeVFN, VirtualFilename],
FileTransfer USING [
Connection, Copy, Create, Delete, Error, ErrorCode, SetPrimaryCredentials,
SetSecondaryCredentials],
Put USING [Line, LongString],
Filer;
FilerImpl: PROGRAM IMPORTS FileName, FileTransfer, Put EXPORTS Filer =
BEGIN
agentName: LONG STRING = "PrintAgent.Demo";
agentDirectory: LONG STRING = "Cedar";
agentPassword: LONG STRING = "SIGPLAN";
msg: ARRAY FileTransfer.ErrorCode OF LONG STRING = [
"(00) illegalParameters"L, "(01) invalidObject"L, "(02) notAStream"L,
"(03) ==??=="L, "(04) illegalLogin"L, "(05) illegalConnect"L,
"(06) skipFile"L, "(07) skipOperation"L, "(08) cantModify"L, "(09) retry"L,
"(10) directoryFull"L, "(11) notFound"L, "(12) accessDenied"L,
"(13) spare3"L, "(14) spare4"L, "(15) ==??=="L, "(16) ==??=="L,
"(17) ==??=="L, "(18) ==??=="L, "(19) ==??=="L, "(20) ==??=="L,
"(21) ==??=="L, "(22) ==??=="L, "(23) ==??=="L, "(24) ==??=="L,
"(25) ==??=="L, "(26) ==??=="L, "(27) ==??=="L, "(28) ==??=="L,
"(29) ==??=="L, "(30) ==??=="L, "(31) unknown"L];
fromconn: FileTransfer.Connection ← NIL;
fromvfn: FileName.VirtualFilename;
toconn: FileTransfer.Connection ← NIL;
tovfn: FileName.VirtualFilename;
File: PUBLIC PROCEDURE [from, to: LONG STRING] =
BEGIN
failed: BOOLEAN ← FALSE;
tovfn ← FileName.AllocVFN[to];
fromvfn ← FileName.AllocVFN[from];
FileTransfer.Copy[
sourceFile: fromvfn, destFile: tovfn, sourceConn: fromconn,
destConn: toconn, veto: NIL, showDates: FALSE !
FileTransfer.Error => {
Put.LongString[NIL, "FileTransfer.Error in File.Copy: "L];
Put.Line[NIL, msg[code]];
SELECT code FROM
illegalParameters, invalidObject, notAStream, illegalLogin,
illegalConnect, skipOperation, cantModify, retry, directoryFull,
notFound, accessDenied, skipFile, unknown => {
failed ← TRUE; CONTINUE};
ENDCASE;
}];
IF (NOT failed) THEN
FileTransfer.Delete[
conn: fromconn, file: fromvfn, veto: NIL !
FileTransfer.Error => {CONTINUE}];
FileName.FreeVFN[tovfn];
FileName.FreeVFN[fromvfn];
END; <<File>>
Init: PROCEDURE =
BEGIN
toconn ← FileTransfer.Create[];
fromconn ← FileTransfer.Create[];
FileTransfer.SetPrimaryCredentials[
conn: toconn, user: agentName, password: agentPassword];
-- FileTransfer.SetSecondaryCredentials[
-- conn: toconn, connectName: agentDirectory,
-- connectPassword: agentPassword];
END; <<Init>>
<<Main>>
Init[];
END... <<FilerImpl>>