INTERFACEAnFSServer ; IMPORT IP, Logger, Pathname, Thread; EXCEPTION Error(TEXT); TYPE T <: Public; Public = OBJECT METHODS init(config: Configuration): T RAISES {Error}; run() RAISES {Error, Thread.Alerted}; END; Configuration = OBJECT localEndpoint := IP.NullEndPoint; serverBase: Pathname.T := NIL; serverCollDirs: TEXT := NIL; serverScanDir: Pathname.T := NIL; loDataPort := IP.NullPort; hiDataPort := IP.NullPort; logger: Logger.T := NIL; maxChildren := -1; compLevel: [-1..9] := -1; detailAllRCSFiles := FALSE; END;
FSServer.T represents the CVSup server, as a whole.  It receives
   connections on the given localEndpoint, and forks off subthreads as
   required to service them.
   serverBase is the pathname of the base directory for the files
   that describe the collections to be served.  If unspecified, a
   suitable default is used.
   serverCollDirs is a colon-separated list of directories where
   the collection information can be found.  Non-absolute paths are
   interpreted relative to serverBase.  If unspecified, a suitable
   default is used.
   serverScanDir is a directory under which the scan files are to be
   found.  If unspecified, then no scan files are used and the server
   does a full tree walk for each collection served.
   loDataPort and hiDataPort specify the range of TCP ports that the
   server will use to establish data connections in passive mode.
   If logger is NIL, no logging will be done.
   maxChildren governs the number of simultaneous connections that will
   be served.  Friends listed in the configuration file are exempt from
   this limit.  If maxChildren is less than 0, the server will serve
   one client without forking, and then exit.
   compLevel specifies the compression level to be used.  A value
   of 0 gives no compression, while 9 gives the maximum.  The
   default of -1 gives a reasonable default compression level. 
END FSServer.