DIRECTORY BluejaySmarts USING [ handle ], BluejayUtils, BluejayUtilsRpcControl USING [ ExportInterface, InterfaceName, UnexportInterface ], Commander USING [ CommandProc, Register ], Jukebox USING [ CloseTune, CreateTune, DeleteTune, Error, FirstNoisyIntervalIn, Info, OpenTune, Tune, TuneSize ], LupineRuntime USING [ BindingError ], Names USING [ CurrentPasskey ], Log USING [ Report ], Thrush USING [ IntervalSpec, IntervalSpecBody, IntervalSpecs, nullTune, Tune, VoiceInterval, VoiceTime ], ThVersions USING [ JayVR ], UserProfile USING [ Token ] ; BluejayUtilsImpl: CEDAR PROGRAM IMPORTS BluejaySmarts, BluejayUtilsRpcControl, Commander, Jukebox, LupineRuntime, Names, Log, ThVersions, UserProfile EXPORTS BluejayUtils = { myName: BluejayUtilsRpcControl.InterfaceName; utilsExported: BOOL_FALSE; Tune: TYPE = Thrush.Tune; DescribeTune: PUBLIC PROC[tune: Tune] RETURNS [exists: BOOL_TRUE, size: INT] = TRUSTED { t: Jukebox.Tune = Jukebox.OpenTune[self: BluejaySmarts.handle, tuneId: tune, write: FALSE! Jukebox.Error=>GOTO NoTune]; size _ Jukebox.TuneSize[t]; Jukebox.CloseTune[BluejaySmarts.handle, t]; EXITS NoTune => exists_FALSE; }; DescribeInterval: PUBLIC PROC[targetTune: Thrush.Tune, targetInterval: Thrush.VoiceInterval, minSilence: Thrush.VoiceTime _ 1] RETURNS [exists: BOOL_TRUE, intervals: Thrush.IntervalSpecs_NIL] = TRUSTED { t: Jukebox.Tune = Jukebox.OpenTune[self: BluejaySmarts.handle, tuneId: targetTune, write: FALSE! Jukebox.Error=>GOTO NoTune]; lastInterval: Thrush.IntervalSpecs_NIL; start, length, end, nextStart: INT_0; start _ targetInterval.start; end _ IF targetInterval.length>=0 THEN start + targetInterval.length ELSE LAST[INT]; WHILE start exists_FALSE; }; DeleteTune: PUBLIC PROC[tune: Tune] RETURNS [existed: BOOL_TRUE] = TRUSTED { Jukebox.DeleteTune[BluejaySmarts.handle, tune!Jukebox.Error => GOTO NoTune]; EXITS NoTune => existed_FALSE; }; NewTune: PUBLIC PROC RETURNS [tune: Tune_Thrush.nullTune] = TRUSTED { t: Jukebox.Tune = Jukebox.CreateTune[self: BluejaySmarts.handle, tuneId: -1!Jukebox.Error=>GOTO NoTune]; tune _ t.tuneId; Jukebox.CloseTune[BluejaySmarts.handle, t!Jukebox.Error=>GOTO NoTune]; EXITS NoTune => NULL; }; TunesInJukebox: PUBLIC PROC RETURNS [nTunes: INT_0] = TRUSTED { nTunes _ Jukebox.Info[BluejaySmarts.handle!Jukebox.Error=>GOTO Problem].nTunes; EXITS Problem => NULL; }; InitializeJukebox: PUBLIC PROC = TRUSTED { nTunes: NAT = TunesInJukebox[]; FOR i: NAT IN [0..nTunes) DO Jukebox.DeleteTune[BluejaySmarts.handle, 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: Names.CurrentPasskey[UserProfile.Token[ key: "BluejayServerPassword", default: "MFLFLX"]]]; Log.Report["Bluejay Utility interface Initialized and Exported", $Bluejay]; utilsExported _ TRUE; }; Uninitialize: PUBLIC PROC = { IF utilsExported THEN { BluejayUtilsRpcControl.UnexportInterface[!LupineRuntime.BindingError=>CONTINUE]; Log.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"]; }. XBluejayUtilsImpl.mesa Last Edited by: Swinehart, March 19, 1986 5:20:20 pm PST Êá˜J™J™8J™šÏk ˜ Jšœœ ˜J˜ J˜SJšœ œ˜*J˜qJ˜%J˜J˜Jšœœ]˜iJ˜J˜Jšœ˜—J˜šœ ˜Jšœn˜uJšœ˜—˜J˜-Jšœœœ˜Jšœœ˜J˜—šÏn œœœ ˜%Jš œ œœœœ˜2šœTœ˜ZJšœœ ˜—J˜J˜+š˜Jšœœ˜—J˜—J˜šžœœœ?˜\Jšœ!˜!Jš œ œœ"œœ˜LšœZœ˜`Jšœœ ˜—Jšœ#œ˜'Jšœœ˜%Jšœ˜Jš œœœœœœ˜Tšœ ˜J˜Jšœq˜qJšœ œœ˜šœœœ˜*Jšœ@˜@—Jšœ œœœ˜CJ˜Jšœœ˜%Jšœ˜—J˜+š˜Jšœœ˜—J˜J™—šž œœœ œ œœœ˜LJšœ?œ ˜Lš˜Jšœœ˜—J˜—J˜š žœœœœ œ˜EJšœ[œ ˜hJ˜Jšœ9œ ˜Fš˜Jšœ œ˜—J˜—J˜š žœœœœ œœ˜?Jšœ:œ˜O˜J˜—J˜—J˜šžœœœœ˜*Jšœœ˜šœœœ ˜Jšœ:œœ˜M—J˜J˜—šž œ œ˜J˜˜ J˜J˜SJ˜J˜—˜'J˜J˜˜1J˜3——J˜KJšœœ˜J˜J˜—šž œœœ˜šœœ˜JšœFœ˜PJ˜=J˜—Jšœœ˜J˜J˜—Jšœ!œ˜;Jšœ#œ˜?JšœC˜CJšœK˜KJ˜J˜J˜J˜—…—šÓ