DIRECTORY IO USING [STREAM], NetAddressing USING [Address, nullAddress], Rope USING [ROPE]; TerminalMultiServing: CEDAR DEFINITIONS = { ROPE: TYPE ~ Rope.ROPE; Host: TYPE ~ NetAddressing.Address; --socket is for control protocol nullHost: Host ~ NetAddressing.nullAddress; EqualHosts: PROC [Host, Host] RETURNS [BOOL]; EnumerateHosts: PROC [PROC [Host]]; IsHost: PROC [Host] RETURNS [BOOL]; ServeHost: PROC [Host, Role] RETURNS [whyNot: ROPE]; Role: TYPE ~ {primary, secondary}; DontServeHost: PROC [Host]; ServeNoHosts: PROC; Interest: TYPE ~ REF InterestPrivate; InterestPrivate: TYPE ~ RECORD [ NoteHost: PROC [interest: Interest, addr: Host, isHost: BOOL], data: REF ANY ¬ NIL]; AddMultiInterest: PROC [Interest]; GetHisTerminal: PROC [Host] RETURNS [ok: BOOL, ans: ROPE]; GetHisVersions: PROC [Host] RETURNS [ok: BOOL, ans: ROPE]; EqualHostReferents: PROC [key1, key2: REF ANY] RETURNS [BOOL]; HashHostReferent: PROC [key: REF ANY] RETURNS [CARDINAL]; ViewersWorker: TYPE ~ PROC [in, out: IO.STREAM, host: Host, sessionDescr: ROPE, Push: PushProc]; PushProc: TYPE ~ PROC [IO.STREAM]; SetViewersWorker: PROC [ViewersWorker]; SimpleTerminalWorker: TYPE ~ PROC [in, out: IO.STREAM, remote: Host, sessPort: ROPE] RETURNS [close: BOOL]; SetSimpleTerminalWorker: PROC [SimpleTerminalWorker]; }. ˆ TerminalMultiServing.Mesa Copyright Σ 1990, 1992 by Xerox Corporation. All rights reserved. Last tweaked by Mike Spreitzer on February 6, 1992 5:40 pm PST What clients, if any, are we being the remote terminal for? No guarantees about whether that clients thinks we're serving it. No guarantees about clients added or removed during the enumeration. The primary terminal of a Host provides input and receives output; the secondary terminals only receive output. Returns, if ok, a formatted TerminalLocation.InstLocation, which is what the client thinks about his terminal; if not ok, ans is why. Useful for making RefTabs keyed on Hosts. ΚΤ•NewlineDelimiter –(cedarcode) style™codešœ™Kšœ Οeœ7™BKšœ>™>—K˜šΟk ˜ Kšžœžœžœ˜Kšœžœ˜+Kšœžœžœ˜—K˜KšΟnœžœž œ˜+K˜Kšžœžœžœ˜KšœžœΟc ˜DKšœ+˜+K˜KšŸ œžœžœžœ˜-K˜šŸœžœžœ ˜#KšœΔ™Δ—K˜KšŸœžœžœžœ˜#K˜šŸ œžœžœ žœ˜4Kšœžœ˜"K™o—K˜KšŸ œžœ˜K˜KšŸ œžœ˜K˜Kšœ žœžœ˜%šœžœžœ˜ KšŸœžœ*žœ˜>Kšœžœžœžœ˜—K˜KšŸœžœ ˜"K˜š Ÿœžœžœžœžœ˜:Kšœ œhœœ™…—K˜Kš Ÿœžœžœžœžœ˜:K˜Kš Ÿœžœžœžœžœžœ˜>š Ÿœžœžœžœžœžœ˜9K™)—K˜Kš œžœžœ žœžœžœŸœ ˜`Kš œ žœžœžœžœ˜"K˜KšŸœžœ˜'K˜Kšœžœžœ žœžœžœžœ žœ˜kK˜KšŸœžœ˜5K˜K˜—…—" ~