DIRECTORY IO, Rope; Protocols: CEDAR DEFINITIONS = { ROPE: TYPE = Rope.ROPE; Protocol: TYPE = REF ProtocolRep; ProtocolRep: TYPE = RECORD [ name: ROPE, Instantiate: PROC [client: Client, logFileName: ROPE _ NIL] RETURNS [c: Conversant], StartConnect: PROC [c: Conversant, serverName: ROPE, login: BOOL _ FALSE], StartDisconnect: PROC [c: Conversant, verbosely: BOOL _ TRUE], GiveUp: PROC [c: Conversant, verbosely: BOOL _ TRUE], SetOnLine: PROC [c: Conversant, onLine: BOOL], protocolData: REF ANY _ NIL ]; Client: TYPE = REF ClientPrivate; ClientPrivate: TYPE = RECORD [ fromClient, toClient: IO.STREAM, type: ClientType, clientData: REF ANY _ NIL ]; ClientType: TYPE = REF ClientTypePrivate; ClientTypePrivate: TYPE = RECORD [ NoteState: PROC [c: Conversant] _ NIL, typeData: REF ANY _ NIL ]; Conversant: TYPE = REF ConversantPrivate; ConversantPrivate: TYPE = RECORD [ protocol: Protocol, client: Client, state: State _ [FALSE, disconnected], serverName: ROPE _ NIL, driver: IO.STREAM _ NIL, conversantData: REF ANY _ NIL ]; State: TYPE = RECORD [ onLine: BOOL, connectivity: Connectivity ]; Connectivity: TYPE = {disconnected, connecting, connected, disconnecting}; GetProtocol: PROC [name: ROPE] RETURNS [p: Protocol]; RegProtocol: PROC [p: Protocol]; EnumerateProtocols: PROC [PROC [Protocol]]; }. κProtocols.Mesa Last Edited by: Spreitzer, February 19, 1986 9:50:07 pm PST Last tweaked by Mike Spreitzer on April 4, 1990 12:22:28 pm PDT Mike Spreitzer August 26, 1986 9:31:23 pm PDT Aborts while connecting or disconnecting. Κž– "cedar" style˜Icode™™;K™?K™-—K˜KšΟk œœ˜K˜šΠbx œœ œ˜ K˜Kšœœœ˜K˜Kšœ œœ ˜!šœ œœ˜Kšœœ˜ Kš Οn œœœœœ˜TKš Ÿ œœœ œœ˜JKšŸœœœœ˜>šŸœœœœ˜5Kšœ)™)—KšŸ œœœ˜.Kšœœœ˜K˜—K˜Kšœœœ˜!šœœœ˜Kšœœœ˜ Kšœ˜Kšœ œœ˜K˜—K˜Kšœ œœ˜)šœœœ˜"Kšœ œœ˜&Kšœ œœ˜K˜—K˜Kšœ œœ˜)šœœœ˜"K˜K˜Kšœœ˜%Kšœ œœ˜Kšœœœœ˜Kšœœœ˜K˜—K˜šœœœ˜Kšœœ˜ Kšœ˜Kšœ˜—K˜Kšœœ8˜JK˜KšŸ œœœœ˜5KšŸ œœ˜ KšŸœœœ ˜+K˜K˜——…—$¬