<<>> <> <> <> <> DIRECTORY IO, KeyTypes, RelativeTimes, RemoteEventTime, RemoteImagerDataTypes, Rope, UserInput, UserInputGetActions, UserInputTypes; TerminalSender: CEDAR DEFINITIONS = { ROPE: TYPE ~ Rope.ROPE; EventTime: TYPE ~ RemoteEventTime.EventTime; Milliseconds: TYPE ~ INT; KeyCode: TYPE ~ [0..255]; Sender: TYPE ~ REF SenderPrivate; SenderPrivate: TYPE; StartSending: PROC [et1: EventTime, xlateKC: KeyCodeTranslation, hostDescr: ROPE, --for presentation to users in messages sourceData: REF ANY, GetAction: GetActionProc, initialState: ActionBodyList, consumer: IO.STREAM, Finish: PROC [sender: Sender, sourceData: REF ANY, consumer, pushStream: IO.STREAM] ¬ NIL, --called at the end of the sending process Push: PROC [IO.STREAM] ¬ NIL, pushStream: IO.STREAM ¬ NIL, Other: PROC [Sender]] RETURNS [Sender]; KeyCodeTranslation: TYPE ~ REF KeyCodeTranslationRep; KeyCodeTranslationRep: TYPE ~ PACKED ARRAY KeyTypes.KeyCode OF KeyCode; GetActionProc: TYPE ~ PROC [sourceData: REF ANY, waitMode: UserInputTypes.WaitMode, waitInterval: Milliseconds, acceptance: UserInputTypes.Acceptance] RETURNS [ActionBody]; ActionBodyList: TYPE ~ LIST OF ActionBody; ActionBody: TYPE ~ UserInputGetActions.InputActionBody; FromUihToDcedar: PROC [UserInput.Handle] RETURNS [KeyCodeTranslation]; StateOfIncreek: PROC [UserInput.Handle] RETURNS [ActionBodyList, RelativeTimes.TimeStamp]; UserInputGetAction: GetActionProc; StopSending: PROC [Sender]; <> WithSender: PROC [Sender, PROC [IO.STREAM]]; SendTimeReply: PROC [sr: Sender, org, mid: EventTime, descToo: BOOL, desc: EventDesc]; <> EventDesc: TYPE ~ RECORD [--carefully packed for wiring mousePosition: RemoteImagerDataTypes.MousePosition, action: RemoteImagerDataTypes.ActionBody]; SendCutBuffer: PROC [sr: Sender, buffer: ATOM, key: CARD, data: ROPE]; Close: PROC [Sender]; <> }.