DIRECTORY Jukebox USING [ IntervalSpecBody, VoiceDirection ], MBQueue USING [ Queue ], Rope USING [ ROPE ], Thrush USING [ ConversationID, ConvEventBody, Credentials, EncryptionKey, KeyTable, NB, nullConvID, PartyID, SmartsID, SHHH ], ThSmarts, VoiceStream USING [ Handle ] ; BluejaySmarts: CEDAR DEFINITIONS = { JayInfo: TYPE = REF JayInfoBody; JayInfoBody: TYPE = RECORD [ credentials: Thrush.Credentials, shh: Thrush.SHHH, stream: VoiceStream.Handle_NIL, conversations: LIST OF ConvDesc _ NIL, intervalReqs: LIST OF IntervalReq _ NIL, notifications: MBQueue.Queue_NIL, numNotifications: INT_0, reportsExist: CONDITION, currentConvID: Thrush.ConversationID _ Thrush.nullConvID ]; infos: ARRAY[0..100) OF JayInfo; IntID: TYPE = LONG CARDINAL; nullIntID: IntID = 0; IntervalReq: TYPE = REF IntervalReqBody; IntervalReqBody: TYPE = RECORD [ iSpec: Jukebox.IntervalSpecBody, direction: Jukebox.VoiceDirection, cDesc: ConvDesc, requestingParty: Thrush.PartyID, -- not cDesc.situation.other, since could be more than rqstr. intID: IntID _ nullIntID, firstInterval: BOOL, lastInterval: BOOL, reportRequested: BOOL _ FALSE ]; ConvDesc: TYPE = REF ConvDescBody; ConvDescBody: TYPE = RECORD [ info: JayInfo, situation: Thrush.ConvEventBody, keyTable: Thrush.KeyTable_NIL, keysMightBeDistributed: CONDITION, -- for waiting for keys to distribute, see ..Impl keysDistributed: BOOL_FALSE ]; GetConversation: PROC [smartsID: Thrush.SmartsID, conv: Thrush.ConversationID] RETURNS [nb: Thrush.NB, cDesc: ConvDesc]; DistributeKey: PROC [cDesc: ConvDesc, key: Thrush.EncryptionKey, wait: BOOL_FALSE] RETURNS [nb: Thrush.NB, keyIndex: [0..17B]]; SetInterval: PROC [IntervalReq] RETURNS [nb: Thrush.NB]; }. JBluejaySmarts.mesa Copyright c 1986 by Xerox Corporation. All rights reserved. Initial skeleton Implementation for Bluejay Smarts Last modified by D. Swinehart, October 19, 1986 4:05:00 pm PDT Doug Terry, November 18, 1986 4:09:40 pm PST Permanent and variable information needed to support the operation of a Smarts Unique ID's for intervals within a conversation Specifications retained by BluejaySmartsImpl to keep track of Interval requests. firstInterval=TRUE => $started and $scheduled events should be passed through to client. lastInterval=TRUE => $finished events should be passed through to client. $flushed events should always be passed through if reportRequested. (intended usage: multiple-interval voice ropes that result in only one sequence of client reports.) Description of the participation of a Bluejay Smarts in a single conversation. In this Smarts, the division of information between ConvDesc and Info is rather arbitrary, since the Smarts can be active in only one conversation anyhow. What's kept here is the stuff that's needed to send supplicants begging. Doug Terry, July 29, 1986 11:13:23 am PDT Added SetInterval as exported procedure; removed dependency on VoiceTemp/VoiceRope. changes to: DIRECTORY, IntervalReqBody, handle, SetInterval Doug Terry, August 18, 1986 2:13:23 pm PDT Added intID to IntervalReqBody and as a parameter to SetInterval. changes to: IntervalReqBody, SetInterval Doug Terry, August 19, 1986 10:55:20 am PDT Exports GetConversation. changes to: GetConversation, SetInterval Doug Terry, August 25, 1986 5:00:54 pm PDT Added DistributeKey. changes to: SetInterval, GetConversation, DistributeKey, DIRECTORY, ConvDescBody Doug Terry, November 18, 1986 4:09:40 pm PST Moved shared data to the RecordingServiceRegister interface. changes to: BluejaySmarts, ConvDescBody, JayInfoBody, DIRECTORY Κφ˜šœ™Icodešœ Οmœ1™™>K™,—J™šΟk ˜ Jšœ žœ&˜4Jšœžœ ˜Jšœžœžœ˜JšœžœFžœ!žœ˜J˜ Jšœ žœ ˜J˜J˜—šœžœ˜$J˜—J™NJšœ žœžœ ˜ šœ žœžœ˜J˜ Jšœ žœ˜Jšœžœ˜Jšœžœžœ žœ˜&Jšœžœžœžœ˜(Jšœžœ˜!Jšœžœ˜Jšœž œ˜J˜8J˜—šœžœ žœ ˜ J˜—J™/Jšœžœžœžœ˜J˜J˜šœP™PJ™XJ™IJ™IJ™d—Jšœ žœžœ˜(šœžœžœ˜ J˜ J˜"J˜Jšœ!Οc=˜^Jšœ˜Jšœžœ˜Jšœžœ˜Jšœžœž˜J˜J˜—J™΄Jšœ žœ˜"šœžœžœ˜J˜Jšœ ˜ Jšœžœ˜Jšœž œŸ1˜TJšœžœž˜Jšœ˜J˜—KšΟnœžœ:žœ žœ˜xK˜Kš   œžœ4žœžœžœ žœ˜K˜Kš  œžœžœ žœ˜8J˜J˜J˜J˜™)KšœS™SKšœ Οr/™;—™*KšœA™AKšœ ‘™(—™+Kšœ™Kšœ ‘™(—™*K™Kšœ ‘D™P—™,Kšœ<™