DIRECTORY RefID USING [ ID, nullID ], Thrush USING [ ConversationID, EncryptionKey, KeyTable, NB, nullKey ], VoiceTemp USING [ IntervalSpec, IntervalSpecs, VoiceTime ] ; FinchRecording: CEDAR DEFINITIONS = { NB: TYPE = Thrush.NB; RConvDesc: TYPE = REF RConvDescBody; RConvDescBody: TYPE = RECORD [ stateChange: CONDITION, -- for waiting for state of conversation to change. pendingIntervals: VoiceTemp.IntervalSpecs _ NIL, -- requested, ~ finished or abandoned voiceTempID: RefID.ID _ RefID.nullID, -- serviceID; See FinchRecordingImpl for the RPC interface. keyTable: Thrush.KeyTable_NIL, keysMightBeDistributed: CONDITION, -- for waiting for keys to distribute, see FinchRecordingImpl keysDistributed: BOOL_FALSE ]; PlaybackTuneProc: TYPE = PROC [ convID: Thrush.ConversationID, intervalSpec: VoiceTemp.IntervalSpec, key: Thrush.EncryptionKey, queueIt: BOOL_TRUE, failOK: BOOL_FALSE -- playing is optional; leave connection open if tune doesn't exist. ] RETURNS [ started: BOOL_FALSE, newConvID: Thrush.ConversationID ]; PlaybackTune: PlaybackTuneProc; RecordTuneProc: TYPE = PROC[ convID: Thrush.ConversationID, useIntervalSpec: VoiceTemp.IntervalSpec_NIL, -- if supplied, it's a request to extend and includes key index useKey: Thrush.EncryptionKey _ Thrush.nullKey, -- useful only if useIntervalSpec#NI queueIt: BOOL_FALSE ] RETURNS[ nb: NB, intervalSpec: VoiceTemp.IntervalSpec, key: Thrush.EncryptionKey, newConvID: Thrush.ConversationID ]; RecordTune: RecordTuneProc; StopTuneProc: TYPE = PROC[ convID: Thrush.ConversationID ]; StopTune: StopTuneProc; DescribeIntervalProc: TYPE = PROC[ intervalSpec: VoiceTemp.IntervalSpec, -- if supplied, it's a request to extend and includes key index minSilence: VoiceTemp.VoiceTime_1 ] RETURNS[ nb: NB, length: INT, intervals: VoiceTemp.IntervalSpecs ]; DescribeInterval: DescribeIntervalProc; InitializeFinchRecording: PROC; }. μFinchRecording.mesa Copyright c 1986 by Xerox Corporation. All rights reserved. Last Edited by: Swinehart, September 27, 1986 1:27:37 pm PDT Types Per-conveersation data relating to Playing and recording; an RConvDesc is found as the $RConvDesc property of a FinchSmarts.ConvDesc.props. Management of services convID if non-null is a hint of a conversation that used to work. newConvID is the one used for this recording. It may well be gone by the time you can use it for anything, but it won't hurt anything either. If the conversation is still active the next time you call for playback, you'd better use it! This procedure waits until the recording is complete. While it is running, calls to the registered procedures may occur to inform the user of what's happening. Client is responsible for arranging process structures so that there is a process available to call StopTune while a call to RecordTune is still pending. convID if non-null is a hint of a conversation that used to work. newConvID is the one used for this recording. It may well be gone by the time you can use it for anything, but it won't hurt anything either. If the conversation is still active the next time you call for playback, you'd better use it! Terminates recording or playback of tune, if any. Causes any pending RecordTune to terminate and return. Swinehart, September 25, 1986 11:01:44 am PDT Derived from FinchSmarts; break out the recorded-voice operations., DIRECTORY, FinchRecording, NB, PlaybackTune ΚΣ˜šœ™Icodešœ Οmœ1™