<> <> <> <<>> Route66Query: PROGRAM 2233 VERSION 1 = BEGIN DEPENDS UPON BulkData (0) VERSION 1, Authentication (14) VERSION 2; Card32: TYPE = LONG CARDINAL; Int32: TYPE = LONG INTEGER; String: TYPE = STRING; Time: TYPE = LONG CARDINAL; -- seconds since 1-Jan-1970 GMT <> docIDSize: CARDINAL = 32; DocId: TYPE = STRING; <> StringList: TYPE = SEQUENCE OF STRING; FileLocation: TYPE = RECORD [ fileServer: String, -- file protocol + server name fileName: String, -- server-relative file name fileFormat: String, -- file format name; unknown => empty startByte: Int32, -- start byte position in file numBytes: Int32, -- number of bytes; unknown => -1 timeLimit: Time -- file valid until ]; FileLocFilter: TYPE = RECORD [ servers: StringList, -- file protocols/servers; empty => any formats: StringList, -- file format names; empty => any timeLimit: Time -- file needed until ]; IdLocList: TYPE = SEQUENCE OF IdLoc; IdLoc: TYPE = RECORD [ docId: DocId, fileLocation: FileLocation ]; OpHandle: TYPE = RECORD [ operation: Card32, -- may be compared for equality. sequence: Card32 -- opaque ]; ProgressReport: TYPE = RECORD [ workDone: Int32, -- measure of work done so far, unknown => -1 workPending: Int32, -- estimated work pending, done => 0, unknown => -1 timePending: Int32, -- estimated seconds until completion, unknown => -1 timeWait: Int32 -- estimated seconds until next result, unknown => -1 ]; ResultType: TYPE = { matches(0), -- return number of matches only handles(1), -- return file handles locations(2), -- return file locations handlesAndLocations(3), -- return handles and locations timeEstimate(4), -- return time estimate only (do not search) lengths(8), -- return lengths in file locations last(65535) }; Error: ERROR [ message: String ] = 1; ArpaService: TYPE = String; <> <<>> Null: PROCEDURE [ service: ArpaService ] REPORTS [ Error ] = 0; Locate: PROCEDURE [ service: ArpaService, userName: String, locateSpec: StringList, docId: DocId, fileLocFilter: FileLocFilter, bufferSize: Int32, resultType: ResultType ] RETURNS [ progress: ProgressReport, matches: Int32, newOp: OpHandle, idLocs: IdLocList ] REPORTS [ Error ] = 1; LocateMore: PROCEDURE [ service: ArpaService, oldOp: OpHandle, bufferSize: Int32, resultType: ResultType ] RETURNS [ progress: ProgressReport, matches: Int32, newOp: OpHandle, idLocs: IdLocList ] REPORTS [ Error ] = 2; ReleaseOpHandle: PROCEDURE [ service: ArpaService, oldOp: OpHandle ] REPORTS [ Error ] = 3; <> Credentials: TYPE = Authentication.Credentials; Verifier: TYPE = Authentication.Verifier; Session: TYPE = RECORD [ token: SessionToken, verifier: Verifier ]; SessionToken: TYPE = Card32; StorageObjectName: TYPE = FileLocation; Logon: PROCEDURE [ service: ArpaService, credentials: Credentials, verifier: Verifier ] RETURNS [ newSession: Session ] REPORTS [ Error ] = 10; Retrieve: PROCEDURE [ oldSession: Session, file: StorageObjectName, content: BulkData.Sink ] RETURNS [ newSession: Session ] REPORTS [ Error ] = 12; Store: PROCEDURE [ oldSession: Session, file: StorageObjectName, content: BulkData.Source ] RETURNS [ newSession: Session ] REPORTS [ Error ] = 13; Logoff: PROCEDURE [ session: Session ] REPORTS [ Error ] = 11; END. <<>>