// IfsTelnet.decl -- declarations for IFS server telnet
// Copyright Xerox Corporation 1979

// Last modified June 22, 1979  3:47 PM by Taft

// requires previous "get" of IfsRs.decl

//---------------------------------------------------------------------------
structure RBD:  //Ring Buffer Descriptor (for ring buffer package)
//---------------------------------------------------------------------------
[
buffer word		//-> the buffer itself
blank word 3		//other stuff used by package
]

//---------------------------------------------------------------------------
structure TCtx:  //Telnet Context
//---------------------------------------------------------------------------
[
@RSCtx
bspStream word		//-> BSP stream
capabilities word	//potential user capabilities
topKT word		//-> top-level keyword table
iRBD @RBD		//input ring buffer descriptor
oTimingMarks word	//unacknowledged outgoing timing marks
iSyncs word		//incoming sync count -- interrupts minus data marks
pendingMark word	//pending mark byte (argument byte expected)
flags word =
   [
   aborting bit 3 =	//aborting command (for whatever reason)
      [
      controlC bit	//abort caused by control-C
      kill bit 2 =
         [
         timeout bit	//abort caused by timeout
         logout bit	//logout request (or connection closed by user)
         ]
      ]
   pause bit		//pause at end of page
   initialized bit	//context fully initialized, ok to run TelnetProcess
   ]
numLine word		//length of page in lines
thisLine word		//current line number
]
manifest lenTCtx = size TCtx/16

manifest
[
socketTelnet = 1	//well-known Pup socket

lenTypeinBuf = 40	//length of typeahead buffer (= 2*number of chars)
maxCmdChars = 150	//max length of main command line
maxCmdPhrases = 10	//max number of phrases in main command line
telnetGetsTimeout = 18000  //3 minute timeout for Gets
telnetPutsTimeout = 6000  //1 minute timeout for Puts

//Telnet mark types
markSync = 1		//data mark for sync protocol
markLineWidth = 2	//line width parameter
markPageLength = 3	//page length parameter
markTerminalType = 4	//terminal type parameter
markTiming = 5		//timing mark
markTimingReply = 6	//timing mark reply

termTypeDisplay = 10	//terminal type for display (pause at end of page)

//error codes
ecUncaughtTelnetError = 300
]

// Following are definitions that are really private to some module
// but that are declared here because that module is split into
// multiple source files.

// Definitions for the IfsTelnetList* modules

manifest
[
//list control flags
listType = #100000
listLength = #40000
listSize = #20000
listCreation = #10000
listWrite = #4000
listRead = #2000
listBackup = #1000
listTimes = #400
listAuthor = #200
listProtection = #100
]