<> <> <> <> <<>> DIRECTORY Commander USING [ Handle ], GVBasics USING [ Password ], IO USING [ STREAM, Value ], Rope USING [ ROPE ], RPC USING [ EncryptionKey ], Pup USING [ Address, nullAddress ] ; VoiceUtils: CEDAR DEFINITIONS = { <> PD: TYPE = RECORD [ attended: BOOLEAN_FALSE, sysIn: IO.STREAM, sysOut: IO.STREAM, -- IOs for error and system status reporting ch: Commander.Handle_NIL, <> reportLimit: NAT_200, -- If 200 (say) reports of any kind, or 10 problem reports, are problemLimit: NAT_10, -- issued in any 60 second period, report that (high priority), and limitInterval: NAT_60, -- then inhibit all reports until these limits have not been exceeded reportingEnabled: BOOL_TRUE, -- whether the limits have been reached <> reportMethods: ARRAY ProblemPriority OF ReportMethod _ ALL[], maximumMailReportInterval: INT _ 60*15 -- mailed reports no more frequently than 4/hr. ]; pd: REF PD; <> ROPE: TYPE=Rope.ROPE; Rname: TYPE = ROPE; NetAddress: TYPE = Pup.Address; nullNetAddress: Pup.Address = Pup.nullAddress; <> <> <> <> WhereToReport: TYPE=ATOM; WhereProc: TYPE = PROC[fixedWhereData: REF, whereData: REF] RETURNS[s: IO.STREAM_NIL]; nullValue: IO.Value = [null[]]; DNFProc: TYPE = PROC[fixedWhereData: REF, whereData: REF] RETURNS[default: BOOL]; RegisterWhereToReport: PROC[ proc: WhereProc_NIL, where: WhereToReport, fixedWhereData: REF_NIL, defaultIfNotFound: DNFProc_NIL]; <> FindWhere: PROC[where: WhereToReport, whereData: REF] RETURNS [s: IO.STREAM_NIL]; ReportMethod: TYPE = RECORD [ reportByMail: BOOL_FALSE, reportTo: ROPE ]; Report: PROC[remark: ROPE, where: WhereToReport_NIL, whereData: REF _NIL]; ReportFR: PROC[remark: ROPE, where: WhereToReport_NIL, whereData: REF _NIL, a1, a2, a3: IO.Value _ nullValue]; ProblemPriority: TYPE = { minimal, low, medium, high, maximum }; Problem: PROC[ remark: ROPE_NIL, where: WhereToReport_NIL, whereData: REF _NIL, priority: ProblemPriority _ maximum]; ProblemFR: PROC[ remark: ROPE_NIL, where: WhereToReport_NIL, whereData: REF _NIL, a1, a2: IO.Value _ nullValue, priority: ProblemPriority _ maximum]; <> Registrize: PROC[name: ROPE] RETURNS [ROPE]; <> CurrentRName: PROC RETURNS [ROPE]; <> CurrentPasskey: PROC[passwordText: ROPE_NIL] RETURNS [RPC.EncryptionKey]; CurrentPassword: PROC[passwordText: ROPE_NIL] RETURNS [GVBasics.Password] = INLINE { RETURN[LOOPHOLE[CurrentPasskey[passwordText]]]; }; <> OwnNetAddress: PROC RETURNS [netAddress: NetAddress]; NetAddressFromRope: PROC [netAddressRope: ROPE] RETURNS [netAddress: NetAddress]; Rspec: TYPE = REF RspecBody; RspecBody: TYPE = RECORD [ simpleName: ROPE_NIL, registry: ROPE_NIL]; RNameStyle: TYPE = { rName, nameDotLark, rNameDotLark }; InstanceFromNetAddress: PROC[netAddress: NetAddress, suffix: ROPE_NIL] RETURNS [instance: Rname]; <> <> RnameToRspec: PROC[name: Rname, defaultRegistry: ROPE_NIL] RETURNS [spec: Rspec]; <> RspecToRname: PROC[spec: Rspec] RETURNS [name: Rname]; <> RspecToSortName: PROC[spec: Rspec] RETURNS [name: ROPE]; <> MakeAtom: PROC[rName: Rname, case: BOOL_FALSE] RETURNS [ATOM]; <> MakeRName: PROC[name: ROPE, style: RNameStyle_ rNameDotLark] RETURNS[rName: ROPE]; LowerCaseRope: PROC[r: ROPE] RETURNS [ROPE]; <<>> <> <<>> CmdOrToken: PROC[cmd: Commander.Handle, key: ROPE, default: ROPE_NIL] RETURNS [value: ROPE]; }. <> <> <<>> <> <> <> <<>> <> <> <> <> <> <> <<>> <<>> <<>>