-- Transport mechanism: TELNET interface

-- [Juniper]<DMS>MS>GlassDefs.mesa

-- Andrew Birrell  24-Dec-80 16:08:47

DIRECTORY
  PupDefs USING [PupSocketID];

GlassDefs: DEFINITIONS =

  BEGIN

  StringType: TYPE = {
    pwd,  -- don't echo; end with SP, CR, ESC, DEL --
    word,  -- echo; end with SP, CR, ESC, DEL --
    line,  -- echo; end with CR, ESC, DEL --
    any  -- echo; end with ESC, DEL --
    };

  HandleObject: TYPE = RECORD [
    ReadChar: PROC RETURNS [CHARACTER],
    ReadString: PROC [prompt, s: STRING, type: StringType] RETURNS [CHARACTER],
    WriteChar: PROC [CHARACTER],
    WriteString: PROC [STRING],
    WriteDecimal: PROC [CARDINAL],
    WriteLongDecimal: PROC [LONG CARDINAL],
    SendNow: PROC,
    CharsLeft: PROC RETURNS [CARDINAL],
    LinesLeft: PROC RETURNS [CARDINAL],
    SetWidth: PROC [CARDINAL] --0 means infinite-- ,
    SetHeight: PROC [CARDINAL] --0 means infinite-- ,
    DelTyped: PROC RETURNS [BOOLEAN],
    Synch: PROC,
    Flush: PROC];

  Handle: TYPE = POINTER TO HandleObject;

  TimeOut: SIGNAL;
  SynchReply: SIGNAL;

  Listen: PROC [work: PROC [Handle], socket: PupDefs.PupSocketID ← [0, 0]];

  END.