-- File: Slosh.Mesa,  Last Edit: HGM  December 20, 1980  12:25 PM
DIRECTORY
  File USING [Capability],
  Window USING [Handle],
  PupTypes USING [PupAddress];
Slosh: DEFINITIONS =
  BEGIN
  PupAddress: TYPE = PupTypes.PupAddress;
  RecvStatus: TYPE = MACHINE DEPENDENT{
    -- strange values used by GateControl
    statusFileNameRejected(2), statusContentsRejected(4),
    -- by a local checker procedure
    statusFileClobbered(6), -- ran out of disk space on copy
    statusDiskFull(8), -- disk full before copy
    statusEFTPFailed(177775B), statusStoreInProgress(177776B),
    statusStoreOk(177777B)};
  -- Other values are ok too.  ERROR codes are convient for uniqueness.
  RecvFile: PROCEDURE [
    who: Window.Handle, fileName, scratch: STRING, file: File.Capability,
    -- NIL if new
    me: PupAddress, ask: PROCEDURE] RETURNS [RecvStatus];
  SendStatus: TYPE = {ok, neverStarted, troubles};
  SendFile: PROCEDURE [
    who: Window.Handle, fileName: STRING, file: File.Capability, him: PupAddress]
    RETURNS [SendStatus];
  Why: TYPE = {check, release, arrived, failed};
  AddProcs: PROCEDURE [proc: PROCEDURE [Why, STRING, File.Capability]];
  Check: PROCEDURE [STRING, File.Capability];
  RejectThisTrash: ERROR [text: STRING];
  Release: PROCEDURE [STRING, File.Capability];
  Arrived: PROCEDURE [STRING, File.Capability];
  Failed: PROCEDURE [STRING, File.Capability];
  CopyFile: PROCEDURE [to, from: File.Capability] RETURNS [result: RecvStatus];
  RetransmissionInterval: PROCEDURE RETURNS [seconds: CARDINAL];
  END.