DIRECTORY Lark, LarkPlay, Pup USING [ Net, Host ], RPC USING [ InterfaceName ], Thrush USING [ ConversationHandle, ConvEvent, ConvEventBody, Disposition, IntervalSpecBody, PartyHandle, SHHH, SmartsHandle, unencrypted ] ; ThSmarts: CEDAR DEFINITIONS = { ConvEvent: TYPE = Thrush.ConvEvent; ConvEventBody: TYPE = Thrush.ConvEventBody; IntervalSpecBody: TYPE = Thrush.IntervalSpecBody; SmartsHandle: TYPE = Thrush.SmartsHandle; SHHH: TYPE = Thrush.SHHH; none: SHHH = Thrush.unencrypted; SmartsInterface: TYPE=REF SmartsInterfaceRecord; SmartsInterfaceRecord: TYPE = RPC.InterfaceName; PartyHandle: TYPE = Thrush.PartyHandle; ConversationHandle: TYPE = Thrush.ConversationHandle; Disposition: TYPE = Thrush.Disposition; Machine: TYPE = RECORD [ net: Pup.Net, host: Pup.Host ]; SmartsProperties: TYPE=RECORD[ x: SELECT role: SmartsRole FROM backstop, supervisor=> NULL, voiceTerminal, manager => [ netAddress: Machine_ ], ENDCASE ]; SmartsRole: TYPE={backstop, voiceTerminal, manager, supervisor}; Progress: PROC[ shh: SHHH_none, smartsID: Thrush.SmartsHandle, event: ConvEvent, yourParty: BOOL, -- TRUE if this event deals with your party. latestEvent: BOOL, -- TRUE if at time of call, this is latest known event for this conv. informationOnly: BOOL_FALSE -- TRUE if higher priority smarts has already acted. ] RETURNS [ d: Disposition ]; }. $ThSmarts.mesa Copyright c 1986 by Xerox Corporation. All rights reserved. Last modified by Swinehart, May 19, 1986 9:59:17 am PDT Types, Copies Since Party=>Smarts interfaces are one=>many, the Party must be able to import instances of Smarts interfaces. These types are really Lupine-generated interface records. They are defined opaquely here to avoid circular Defs dependencies. See ThParty.Register*[]. Circularities prevent this definition from being here ~~ see ThParty LocalSmartsInterface: TYPE = ThSmartsRpcControl.InterfaceRecord; Retain same size and format for compatibility with 6.0 Thrush. voiceTerminal represents a role corresponding to Lark Smarts, front or back door; the basic workhorse. An important aspect of such a Smarts is that its client can provide a voice path. manager represents the intelligent workstation level. Such a Smarts will tend to accept some operations and pass others. supervisor smarts can be used either to monitor Party operations, log system operations, or to provide some sort of administrative filtering. backstop represents a level which is required to respond to all requests; It need not necessarily do anything else. <> SmartsHandles are created by/in ThParty.Register*[]. Smarts Operations These functions operate by performing the distribution function on the set of Smarts connected to the Party. This is further described in the ThParty implementations. Called by Party to report changes in connection status either in response to an Alert from self or due to various other call progress events, including the initiation or termination of a connection. Don't do anything to the network, and don't do anything noisy. ?? Swinehart, May 19, 1986 9:59:07 am PDT Cedar 6.1 changes to: DIRECTORY, Disposition, Machine, SmartsProperties Κs˜šœ ™ Icodešœ Οmœ1™—J˜šœžœžœ˜šœžœž˜Jšœžœ˜J˜3Jšžœ˜ ——J™šœ žœ0˜@JšΟb œ¬™ΉJšŸœr™yJšŸ œƒ™JšŸœˆ™—J˜Jšœ4™4J˜—™J™Jšœ§™§J˜JšΟnœžœ˜šœΖ™ΖJšœžœ˜J˜Jšœ˜Jšœ žœΟc,˜=Jšœ žœ‘E˜Xšœžœžœ‘4˜PJ™A—Jšœžœ˜—J˜J˜—J˜™&K™ Kšœ Οr1™=—K™—…—Lγ