-- Copyright (C) 1981, 1982, 1984  by Xerox Corporation. All rights reserved. 
-- SiteCacheDefs.mesa, Transport Mechanism - DEFS for site cache --

-- HGM: 10-Dec-84 22:02:51
-- Andrew Birrell  20-Jan-81 14:38:43 --
-- Mike Schroeder  18-Nov-82 11:14:48 --

DIRECTORY
  BodyDefs USING [RName],
  HeapDefs USING [ReaderHandle],
  NameInfoDefs USING [RListHandle],
  ServerDefs USING [ServerHandle];


SiteCacheDefs: DEFINITIONS =
  BEGIN

  SelectiveFlush: PROCEDURE [server: ServerDefs.ServerHandle];
  -- Flushes from the site cache those entries which are
  -- non-primary and indicate a server other than the
  -- given one.  That is, the only entries not flushed
  -- are those which are primary and those which are for
  -- the given server.  This is called by UpServer. --

  SingleFlush: PROCEDURE [who: BodyDefs.RName];
  -- removes from the site cache any entry for "who". --

  RecipientInfo: TYPE = RECORD [
    SELECT type: * FROM
    allDown => NULL,
    notFound => NULL,
    dl => [members: NameInfoDefs.RListHandle],
    foreign => [members: HeapDefs.ReaderHandle],
    local => NULL,
    found => [server: ServerDefs.ServerHandle],
    ENDCASE];
  -- "allDown": the validity of the R-Name is not known;
  -- "notFound": the R-Name is not valid;
  -- "dl": the R-Name is a group, contents as given;
  -- "local": the R-Name is an individual, best mbx is here;
  -- "found": R-Name is an individual, best mbx as given.

  FindMBXSite: PROCEDURE [who: BodyDefs.RName] RETURNS [i: RecipientInfo];
  -- checks validity and meaning of R-Name --

  RemailInfo: TYPE = {invalid, remail, stillLocal};
  -- "invalid" means that the inbox may be flushed
  -- "remail" means inbox must be remailed
  -- "stillLocal" means remailing is not necessary

  NeedToRemail: PROCEDURE [who: BodyDefs.RName] RETURNS [RemailInfo];

  ValidateRName: PROCEDURE [who: BodyDefs.RName] RETURNS [BOOLEAN];
  -- checks validity of R-Name as either recipient or
  -- distribution list by calling FindMBXSite. --

  CheckPrimary: PROCEDURE [who: BodyDefs.RName, server: ServerDefs.ServerHandle]
    RETURNS [BOOLEAN];
  -- verifies whether that server is the recipient's primary mailbox --
  -- in case of doubt, replies FALSE --

  END.