DIRECTORY BluejayUtils, BluejayUtilsRpcControl USING [ ExportInterface, InterfaceName, UnexportInterface ], Commander USING [ CommandProc, Register ], Jukebox USING [ CloseTune, CreateTune, DeleteTune, Error, FirstNoisyIntervalIn, Info, OpenTune, Tune, TuneSize, IntervalSpec, IntervalSpecBody, IntervalSpecs, nullTuneID, TuneID, VoiceTime ], LupineRuntime USING [ BindingError ], RecordingServiceRegister USING [ jukebox ], ThVersions USING [ JayVR ], UserProfile USING [ Token ], VoiceUtils USING [ CurrentPasskey, Report ] ; BluejayUtilsImpl: CEDAR PROGRAM IMPORTS RecordingServiceRegister, BluejayUtilsRpcControl, Commander, Jukebox, LupineRuntime, ThVersions, UserProfile, VoiceUtils EXPORTS BluejayUtils = { myName: BluejayUtilsRpcControl.InterfaceName; utilsExported: BOOL_FALSE; TuneID: TYPE = Jukebox.TuneID; DescribeTune: PUBLIC PROC[tune: TuneID] RETURNS [exists: BOOL_TRUE, size: INT] = TRUSTED { t: Jukebox.Tune = Jukebox.OpenTune[self: RecordingServiceRegister.jukebox, tuneId: tune, write: FALSE! Jukebox.Error=>GOTO NoTune]; size _ Jukebox.TuneSize[t]; Jukebox.CloseTune[RecordingServiceRegister.jukebox, t]; EXITS NoTune => exists_FALSE; }; DescribeInterval: PUBLIC PROC[intervalSpec: Jukebox.IntervalSpec, minSilence: Jukebox.VoiceTime _ 1] RETURNS [exists: BOOL_TRUE, intervals: Jukebox.IntervalSpecs_NIL] = TRUSTED { t: Jukebox.Tune = Jukebox.OpenTune[self: RecordingServiceRegister.jukebox, tuneId: intervalSpec.tuneID, write: FALSE! Jukebox.Error=>GOTO NoTune]; lastInterval: Jukebox.IntervalSpecs_NIL; start, len, end, nextStart: INT_0; start _ intervalSpec.start; end _ IF intervalSpec.length>=0 THEN start + intervalSpec.length ELSE LAST[INT]; WHILE start exists_FALSE; }; DeleteTune: PUBLIC PROC[tuneID: TuneID] RETURNS [existed: BOOL_TRUE] = TRUSTED { Jukebox.DeleteTune[RecordingServiceRegister.jukebox, tuneID!Jukebox.Error => GOTO NoTune]; EXITS NoTune => existed_FALSE; }; NewTune: PUBLIC PROC RETURNS [tuneID: TuneID_Jukebox.nullTuneID] = TRUSTED { t: Jukebox.Tune = Jukebox.CreateTune[self: RecordingServiceRegister.jukebox, tuneId: -1!Jukebox.Error=>GOTO NoTune]; tuneID _ t.tuneId; Jukebox.CloseTune[RecordingServiceRegister.jukebox, t!Jukebox.Error=>GOTO NoTune]; EXITS NoTune => NULL; }; TunesInJukebox: PUBLIC PROC RETURNS [nTunes: INT_0] = TRUSTED { nTunes _ Jukebox.Info[RecordingServiceRegister.jukebox!Jukebox.Error=>GOTO Problem].nTunes; EXITS Problem => NULL; }; InitializeJukebox: PUBLIC PROC = TRUSTED { nTunes: NAT = TunesInJukebox[]; FOR i: NAT IN [0..nTunes) DO Jukebox.DeleteTune[RecordingServiceRegister.jukebox, i!Jukebox.Error=>CONTINUE]; ENDLOOP; }; Initialize: PUBLIC PROC = { Uninitialize[]; myName _ [ type: "BluejayUtils.Lark", instance: UserProfile.Token[key: "BluejayServerInstance", default: "Lampson.Lark"], version: ThVersions.JayVR ]; BluejayUtilsRpcControl.ExportInterface[ interfaceName: myName, user: myName.instance, password: VoiceUtils.CurrentPasskey[UserProfile.Token[ key: "BluejayServerPassword", default: "MFLFLX"]]]; VoiceUtils.Report["Bluejay Utility interface Initialized and Exported", $Bluejay]; utilsExported _ TRUE; }; Uninitialize: PUBLIC PROC = { IF utilsExported THEN { BluejayUtilsRpcControl.UnexportInterface[!LupineRuntime.BindingError=>CONTINUE]; VoiceUtils.Report["Bluejay Utility interface Unexported", $Bluejay]; }; utilsExported _ FALSE; }; InitCmd: Commander.CommandProc = TRUSTED { Initialize[]; }; UninitCmd: Commander.CommandProc = TRUSTED { Uninitialize[]; }; Commander.Register["JayUtils", InitCmd, "Start Bluejay Utilities"]; Commander.Register["UnJayUtils", UninitCmd, "Terminate Bluejay Utilities"]; }. NBluejayUtilsImpl.mesa Copyright c 1986 by Xerox Corporation. All rights reserved. Last Edited by: Swinehart, June 25, 1986 10:18:22 am PDT Doug Terry, November 18, 1986 3:40:56 pm PST Swinehart, May 17, 1986 3:31:52 pm PDT Cedar 6.1 changes to: DIRECTORY, BluejayUtilsImpl, Initialize, Uninitialize Swinehart, June 10, 1986 8:47:08 am PDT Adapt to changes in Bluejay, VoiceTemp changes to: DIRECTORY, DescribeTune, DescribeInterval, DeleteTune, NewTune Doug Terry, July 30, 1986 3:24:58 pm PDT Removed dependency on VoiceTemp; took implementation of DescribeInterval from old BluejaySmartsImpl. changes to: DIRECTORY, DescribeInterval, NewTune, BluejayUtilsImpl Doug Terry, November 18, 1986 3:40:56 pm PST changes to: DIRECTORY, BluejayUtilsImpl, DescribeTune, DescribeInterval, DeleteTune, NewTune, TunesInJukebox, InitializeJukebox Κ:˜™Icodešœ Οmœ1™<—™8K™,—J™šΟk ˜ J˜ J˜SJšœ žœ˜*JšœΏ˜ΏJ˜%Jšœžœ ˜+J˜J˜J˜+Jšœ˜—J˜šœž ˜Jšžœy˜€Jšžœ˜—˜J˜-Jšœžœžœ˜Jšœžœ˜J˜—šΟn œžœžœ˜'Jš žœ žœžœžœžœ˜2šœ`žœ˜fJšœžœ ˜—J˜Jšœ7˜7šž˜Jšœžœ˜—J˜—J˜šŸœžœžœ$˜AJšœ"˜"Jš žœ žœžœ#žœžœ˜MJšœožœžœ ˜’Jšœ$žœ˜(Jšœžœ˜"Jšœ˜Jš œžœžœžœžœžœ˜Pšžœ ž˜Jšœ˜Jšœz˜zJšžœžœžœ˜šœžœžœ˜+Jšœ:˜:—Jšžœ žœžœžœ˜CJ˜Jšœžœ˜"Jšžœ˜—Jšœ7˜7šž˜Jšœžœ˜—J˜J™—šŸ œžœžœžœ žœžœžœ˜PJšœMžœ ˜Zšž˜Jšœžœ˜—J˜—J˜š Ÿœžœžœžœ'žœ˜LJšœgžœ ˜tJ˜JšœEžœ ˜Ršž˜Jšœ žœ˜—J˜—J˜š Ÿœžœžœžœ žœžœ˜?JšœFžœ˜[˜J˜—J˜—J˜šŸœžœžœžœ˜*Jšœžœ˜šžœžœžœ ž˜JšœFžœžœ˜Y—J˜J˜—šŸ œž œ˜J˜˜ J˜J˜SJ˜J˜—˜'J˜J˜˜6J˜3——J˜RJšœžœ˜J˜J˜—šŸ œžœžœ˜šžœžœ˜JšœFžœ˜PJ˜DJ˜—Jšœžœ˜J˜J˜—Jšœ!žœ˜;Jšœ#žœ˜?JšœC˜CJšœK˜KJ˜J˜J˜™&K™ Kšœ Οr5™A—™'K™&Kšœ  >™J—™(Kšœd™dKšœ  6™B—K™™,Kšœ  s™—K™—…—