BluejayUtilsImpl.mesa
Copyright © 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
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: BOOLFALSE;
TuneID: TYPE = Jukebox.TuneID;
DescribeTune: PUBLIC PROC[tune: TuneID]
RETURNS [exists: BOOLTRUE, 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: BOOLTRUE, 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𡤀
start ← intervalSpec.start;
end ← IF intervalSpec.length>=0 THEN start + intervalSpec.length ELSE LAST[INT];
WHILE start<end DO
int: Jukebox.IntervalSpecs;
[start, len, nextStart] ← Jukebox.FirstNoisyIntervalIn[RecordingServiceRegister.jukebox, t, start, end-start, minSilence];
IF len<=0 THEN EXIT;
int ← LIST[NEW[Jukebox.IntervalSpecBody ← [
tuneID: intervalSpec.tuneID, start: start, length: len]]];
IF intervals=NIL THEN intervals ← int ELSE lastInterval.rest ← int;
lastInterval ← int;
start ← MAX[nextStart, start+len];
ENDLOOP;
Jukebox.CloseTune[RecordingServiceRegister.jukebox, t];
EXITS
NoTune => exists←FALSE;
};
DeleteTune: PUBLIC PROC[tuneID: TuneID] RETURNS [existed: BOOLTRUE] = 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𡤀] = 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"];
}.
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