-- EnvelopeContents2P0V0ClientImpl.Mesa
-- Copyright Ó 1991 by Xerox Corporation. All rights reserved.
 -- Copyright (C) 1989 by Xerox Corporation. All rights reserved.
 -- Generated by Willie-sue.pa at February 13, 1989 6:53:32 pm PST
 -- using Sirocco [2.0] of February 10, 1989 6:26:26 pm PST

DIRECTORY
 CrRPC,
 CHNameP2V0,
 MailTransportP17V5,
 EnvelopeFormatP1517V1,
 EnvelopeContents2P0V0;

EnvelopeContents2P0V0ClientImpl: CEDAR PROGRAM
 IMPORTS CrRPC
 EXPORTS EnvelopeContents2P0V0 ~ {
 OPEN EnvelopeContents2P0V0;

GetError: CrRPC.GetErrorProc ~ {
  ERROR CrRPC.Error[h, remoteError, "Unexpected Remote Error"];
  };

-- Remote Procedures --

 ItemFromOriginator: PUBLIC ItemFromOriginatorType ~ {
  PutArgs: CrRPC.PutArgsProc ~ {
   CrRPC.PutCard16[s, length];
   MProc1[h, s, value];
   };
  GetResults: CrRPC.GetResultsProc ~ {
   item ¬ UProc2[h, s];
   };
   
  CrRPC.Call[h~h, remotePgm~0, remotePgmVersion~0, remoteProc~25 , putArgs~PutArgs, getResults~GetResults, getError~GetError];
  };

 ItemFromX400SpecificReportInformation: PUBLIC ItemFromX400SpecificReportInformationType ~ {
  PutArgs: CrRPC.PutArgsProc ~ {
   CrRPC.PutCard16[s, length];
   MProc3[h, s, value];
   };
  GetResults: CrRPC.GetResultsProc ~ {
   item ¬ UProc2[h, s];
   };
   
  CrRPC.Call[h~h, remotePgm~0, remotePgmVersion~0, remoteProc~32 , putArgs~PutArgs, getResults~GetResults, getError~GetError];
  };

 ItemFromConverted: PUBLIC ItemFromConvertedType ~ {
  PutArgs: CrRPC.PutArgsProc ~ {
   CrRPC.PutCard16[s, length];
   MProc4[h, s, value];
   };
  GetResults: CrRPC.GetResultsProc ~ {
   item ¬ UProc2[h, s];
   };
   
  CrRPC.Call[h~h, remotePgm~0, remotePgmVersion~0, remoteProc~35 , putArgs~PutArgs, getResults~GetResults, getError~GetError];
  };

 ItemFromPreviousRecipients: PUBLIC ItemFromPreviousRecipientsType ~ {
  PutArgs: CrRPC.PutArgsProc ~ {
   CrRPC.PutCard16[s, length];
   MProc5[h, s, value];
   };
  GetResults: CrRPC.GetResultsProc ~ {
   item ¬ UProc2[h, s];
   };
   
  CrRPC.Call[h~h, remotePgm~0, remotePgmVersion~0, remoteProc~28 , putArgs~PutArgs, getResults~GetResults, getError~GetError];
  };

 ItemFromPriority: PUBLIC ItemFromPriorityType ~ {
  PutArgs: CrRPC.PutArgsProc ~ {
   CrRPC.PutCard16[s, length];
   CrRPC.PutCard16[s, ORD[value]];
   };
  GetResults: CrRPC.GetResultsProc ~ {
   item ¬ UProc2[h, s];
   };
   
  CrRPC.Call[h~h, remotePgm~0, remotePgmVersion~0, remoteProc~34 , putArgs~PutArgs, getResults~GetResults, getError~GetError];
  };

 ItemFromMessageID: PUBLIC ItemFromMessageIDType ~ {
  PutArgs: CrRPC.PutArgsProc ~ {
   CrRPC.PutCard16[s, length];
   FOR i6: CARDINAL IN [0..5) DO
    CrRPC.PutCard16[s, value[i6]];
    ENDLOOP;
   };
  GetResults: CrRPC.GetResultsProc ~ {
   item ¬ UProc2[h, s];
   };
   
  CrRPC.Call[h~h, remotePgm~0, remotePgmVersion~0, remoteProc~21 , putArgs~PutArgs, getResults~GetResults, getError~GetError];
  };

 ItemFromAddressChangeNotice: PUBLIC ItemFromAddressChangeNoticeType ~ {
  PutArgs: CrRPC.PutArgsProc ~ {
   CrRPC.PutCard16[s, length];
   MProc1[h, s, value];
   };
  GetResults: CrRPC.GetResultsProc ~ {
   item ¬ UProc2[h, s];
   };
   
  CrRPC.Call[h~h, remotePgm~0, remotePgmVersion~0, remoteProc~30 , putArgs~PutArgs, getResults~GetResults, getError~GetError];
  };

 ItemFromAuthenticationLevelOfSender: PUBLIC ItemFromAuthenticationLevelOfSenderType ~ {
  PutArgs: CrRPC.PutArgsProc ~ {
   CrRPC.PutCard16[s, length];
   CrRPC.PutCard16[s, ORD[value]];
   };
  GetResults: CrRPC.GetResultsProc ~ {
   item ¬ UProc2[h, s];
   };
   
  CrRPC.Call[h~h, remotePgm~0, remotePgmVersion~0, remoteProc~36 , putArgs~PutArgs, getResults~GetResults, getError~GetError];
  };

 ItemFromContentsSize: PUBLIC ItemFromContentsSizeType ~ {
  PutArgs: CrRPC.PutArgsProc ~ {
   CrRPC.PutCard16[s, length];
   CrRPC.PutCard32[s, value];
   };
  GetResults: CrRPC.GetResultsProc ~ {
   item ¬ UProc2[h, s];
   };
   
  CrRPC.Call[h~h, remotePgm~0, remotePgmVersion~0, remoteProc~24 , putArgs~PutArgs, getResults~GetResults, getError~GetError];
  };

 ItemFromTransportOptions: PUBLIC ItemFromTransportOptionsType ~ {
  PutArgs: CrRPC.PutArgsProc ~ {
   CrRPC.PutCard16[s, length];
   CrRPC.PutBool[s, value.returnOfContents];
   CrRPC.PutBool[s, value.alternateRecipientAllowed];
   };
  GetResults: CrRPC.GetResultsProc ~ {
   item ¬ UProc2[h, s];
   };
   
  CrRPC.Call[h~h, remotePgm~0, remotePgmVersion~0, remoteProc~31 , putArgs~PutArgs, getResults~GetResults, getError~GetError];
  };

 ItemFromContentsType: PUBLIC ItemFromContentsTypeType ~ {
  PutArgs: CrRPC.PutArgsProc ~ {
   CrRPC.PutCard16[s, length];
   CrRPC.PutCard32[s, value];
   };
  GetResults: CrRPC.GetResultsProc ~ {
   item ¬ UProc2[h, s];
   };
   
  CrRPC.Call[h~h, remotePgm~0, remotePgmVersion~0, remoteProc~22 , putArgs~PutArgs, getResults~GetResults, getError~GetError];
  };

 ItemFromReturnToName: PUBLIC ItemFromReturnToNameType ~ {
  PutArgs: CrRPC.PutArgsProc ~ {
   CrRPC.PutCard16[s, length];
   MProc1[h, s, value];
   };
  GetResults: CrRPC.GetResultsProc ~ {
   item ¬ UProc2[h, s];
   };
   
  CrRPC.Call[h~h, remotePgm~0, remotePgmVersion~0, remoteProc~27 , putArgs~PutArgs, getResults~GetResults, getError~GetError];
  };

 ItemFromTableOfContents: PUBLIC ItemFromTableOfContentsType ~ {
  PutArgs: CrRPC.PutArgsProc ~ {
   CrRPC.PutCard16[s, length];
   MProc7[h, s, value];
   };
  GetResults: CrRPC.GetResultsProc ~ {
   item ¬ UProc2[h, s];
   };
   
  CrRPC.Call[h~h, remotePgm~0, remotePgmVersion~0, remoteProc~23 , putArgs~PutArgs, getResults~GetResults, getError~GetError];
  };

 ItemFromOtherRecipients: PUBLIC ItemFromOtherRecipientsType ~ {
  PutArgs: CrRPC.PutArgsProc ~ {
   CrRPC.PutCard16[s, length];
   MProc5[h, s, value];
   };
  GetResults: CrRPC.GetResultsProc ~ {
   item ¬ UProc2[h, s];
   };
   
  CrRPC.Call[h~h, remotePgm~0, remotePgmVersion~0, remoteProc~33 , putArgs~PutArgs, getResults~GetResults, getError~GetError];
  };

 ItemFromReport: PUBLIC ItemFromReportType ~ {
  PutArgs: CrRPC.PutArgsProc ~ {
   CrRPC.PutCard16[s, length];
   MProc8[h, s, value.originalEnvelope];
   MProc9[h, s, value.fateOfThisReport];
   MProc10[h, s, value.reportType];
   };
  GetResults: CrRPC.GetResultsProc ~ {
   item ¬ UProc2[h, s];
   };
   
  CrRPC.Call[h~h, remotePgm~0, remotePgmVersion~0, remoteProc~26 , putArgs~PutArgs, getResults~GetResults, getError~GetError];
  };

 ItemFromGatewayPostmark: PUBLIC ItemFromGatewayPostmarkType ~ {
  PutArgs: CrRPC.PutArgsProc ~ {
   CrRPC.PutCard16[s, length];
   MProc1[h, s, value.postedAt];
   CrRPC.PutCard32[s, value.time];
   };
  GetResults: CrRPC.GetResultsProc ~ {
   item ¬ UProc2[h, s];
   };
   
  CrRPC.Call[h~h, remotePgm~0, remotePgmVersion~0, remoteProc~29 , putArgs~PutArgs, getResults~GetResults, getError~GetError];
  };

 ItemFromPostmark: PUBLIC ItemFromPostmarkType ~ {
  PutArgs: CrRPC.PutArgsProc ~ {
   CrRPC.PutCard16[s, length];
   MProc1[h, s, value.postedAt];
   CrRPC.PutCard32[s, value.time];
   };
  GetResults: CrRPC.GetResultsProc ~ {
   item ¬ UProc2[h, s];
   };
   
  CrRPC.Call[h~h, remotePgm~0, remotePgmVersion~0, remoteProc~20 , putArgs~PutArgs, getResults~GetResults, getError~GetError];
  };

-- Unmarshal / Marshal Procs --


 MProc7: PROC [h: CrRPC.Handle, s: CrRPC.STREAM, val: EnvelopeFormatP1517V1.TableOfContents] ~ {
  CrRPC.PutCard16[s, val.length];
  FOR i11: CARDINAL IN [0..val.length) DO
   CrRPC.PutCard32[s, val.body[i11].type];
   CrRPC.PutCard32[s, val.body[i11].sizeInBytes];
   ENDLOOP;
  };

 MProc3: PROC [h: CrRPC.Handle, s: CrRPC.STREAM, val: EnvelopeFormatP1517V1.X400SpecificReportInformation] ~ {
  CrRPC.PutCard16[s, val.length];
  FOR i12: CARDINAL IN [0..val.length) DO
   MProc13[h, s, val.body[i12]];
   ENDLOOP;
  };

 UProc2: PROC [h: CrRPC.Handle, s: CrRPC.STREAM] RETURNS [res: MailTransportP17V5.Opaque] ~ {
  {
   length15: CARDINAL ~ CrRPC.GetCard16[s];
   res ¬ NEW[MailTransportP17V5.OpaqueObject[length15]];
   FOR i14: CARDINAL IN [0..length15) DO
    res.body[i14] ¬ CrRPC.GetCard16[s];
    ENDLOOP;
   };
  };

 MProc13: PROC [h: CrRPC.Handle, s: CrRPC.STREAM, val: EnvelopeFormatP1517V1.X400ReportItem] ~ {
  CrRPC.PutCard16[s, val.length];
  FOR i16: CARDINAL IN [0..val.length) DO
   CrRPC.PutCard16[s, val.body[i16]];
   ENDLOOP;
  };

 MProc10: PROC [h: CrRPC.Handle, s: CrRPC.STREAM, val: EnvelopeFormatP1517V1.RepType] ~ {
  CrRPC.PutCard16[s, ORD[val.type]];
  WITH val SELECT FROM
   it: REF EnvelopeFormatP1517V1.RepTypeObject.dlMember => {
    MProc1[h, s, it­.dlMember.dlName];
    MProc18[h, s, it­.dlMember.invalidDLRecipients];
    };
   it: REF EnvelopeFormatP1517V1.RepTypeObject.other => {
    MProc19[h, s, it­.other.succeeded];
    MProc20[h, s, it­.other.failed];
    };
   ENDCASE;
  };

 MProc9: PROC [h: CrRPC.Handle, s: CrRPC.STREAM, val: EnvelopeFormatP1517V1.Fate] ~ {
  CrRPC.PutCard16[s, ORD[val.type]];
  WITH val SELECT FROM
   it: REF EnvelopeFormatP1517V1.FateObject.delivered => {
    CrRPC.PutCard16[s, ORD[it­.delivered]];
    };
   it: REF EnvelopeFormatP1517V1.FateObject.notDelivered => {
    CrRPC.PutCard16[s, ORD[it­.notDelivered.reason]];
    MProc1[h, s, it­.notDelivered.reportCreationPostmark.postedAt];
    CrRPC.PutCard32[s, it­.notDelivered.reportCreationPostmark.time];
    };
   ENDCASE;
  };

 MProc5: PROC [h: CrRPC.Handle, s: CrRPC.STREAM, val: MailTransportP17V5.RecipientList] ~ {
  CrRPC.PutCard16[s, val.length];
  FOR i22: CARDINAL IN [0..val.length) DO
   MProc1[h, s, val.body[i22].name];
   CrRPC.PutCard16[s, val.body[i22].recipientID];
   CrRPC.PutCard16[s, ORD[val.body[i22].report]];
   ENDLOOP;
  };

 MProc19: PROC [h: CrRPC.Handle, s: CrRPC.STREAM, val: EnvelopeFormatP1517V1.SucList] ~ {
  CrRPC.PutCard16[s, val.length];
  FOR i23: CARDINAL IN [0..val.length) DO
   MProc1[h, s, val.body[i23].recipient.name];
   CrRPC.PutCard16[s, val.body[i23].recipient.recipientID];
   CrRPC.PutCard16[s, ORD[val.body[i23].recipient.report]];
   CrRPC.PutCard32[s, val.body[i23].when];
   ENDLOOP;
  };

 MProc4: PROC [h: CrRPC.Handle, s: CrRPC.STREAM, val: EnvelopeFormatP1517V1.Converted] ~ {
  CrRPC.PutCard16[s, val.length];
  FOR i24: CARDINAL IN [0..val.length) DO
   CrRPC.PutCard16[s, ORD[val.body[i24]]];
   ENDLOOP;
  };

 MProc1: PROC [h: CrRPC.Handle, s: CrRPC.STREAM, val: MailTransportP17V5.RName] ~ {
  CrRPC.PutCard16[s, ORD[val.type]];
  WITH val SELECT FROM
   it: REF MailTransportP17V5.RNameObject.xns => {
    CrRPC.PutRope[s, it­.xns.organization];
    CrRPC.PutRope[s, it­.xns.domain];
    CrRPC.PutRope[s, it­.xns.object];
    };
   it: REF MailTransportP17V5.RNameObject.gateway => {
    CrRPC.PutRope[s, it­.gateway.country];
    CrRPC.PutRope[s, it­.gateway.adminDomain];
    CrRPC.PutRope[s, it­.gateway.privateDomain];
    CrRPC.PutRope[s, it­.gateway.organization];
    MProc26[h, s, it­.gateway.organizationalUnits];
    MProc27[h, s, it­.gateway.personal];
    MProc28[h, s, it­.gateway.gatewaySpecificInformation];
    };
   ENDCASE;
  };

 MProc20: PROC [h: CrRPC.Handle, s: CrRPC.STREAM, val: EnvelopeFormatP1517V1.FailList] ~ {
  CrRPC.PutCard16[s, val.length];
  FOR i29: CARDINAL IN [0..val.length) DO
   MProc1[h, s, val.body[i29].recipient.name];
   CrRPC.PutCard16[s, val.body[i29].recipient.recipientID];
   CrRPC.PutCard16[s, ORD[val.body[i29].recipient.report]];
   CrRPC.PutCard16[s, ORD[val.body[i29].reason]];
   ENDLOOP;
  };

 MProc8: PROC [h: CrRPC.Handle, s: CrRPC.STREAM, val: MailTransportP17V5.Envelope] ~ {
  CrRPC.PutCard16[s, val.length];
  FOR i30: CARDINAL IN [0..val.length) DO
   CrRPC.PutCard32[s, val.body[i30].type];
   MProc31[h, s, val.body[i30].value];
   ENDLOOP;
  };

 MProc27: PROC [h: CrRPC.Handle, s: CrRPC.STREAM, val: MailTransportP17V5.PerChoice] ~ {
  CrRPC.PutCard16[s, ORD[val.type]];
  WITH val SELECT FROM
   it: REF MailTransportP17V5.PerChoiceObject.whole => {
    CrRPC.PutRope[s, it­.whole];
    };
   it: REF MailTransportP17V5.PerChoiceObject.broken => {
    CrRPC.PutRope[s, it­.broken.given];
    CrRPC.PutRope[s, it­.broken.initials];
    CrRPC.PutRope[s, it­.broken.family];
    CrRPC.PutRope[s, it­.broken.generation];
    };
   ENDCASE;
  };

 MProc26: PROC [h: CrRPC.Handle, s: CrRPC.STREAM, val: MailTransportP17V5.OrgUnits] ~ {
  CrRPC.PutCard16[s, val.length];
  FOR i33: CARDINAL IN [0..val.length) DO
   CrRPC.PutRope[s, val.body[i33]];
   ENDLOOP;
  };

 MProc18: PROC [h: CrRPC.Handle, s: CrRPC.STREAM, val: EnvelopeFormatP1517V1.InvalRecip] ~ {
  CrRPC.PutCard16[s, val.length];
  FOR i34: CARDINAL IN [0..val.length) DO
   MProc1[h, s, val.body[i34].recipient.name];
   CrRPC.PutCard16[s, val.body[i34].recipient.recipientID];
   CrRPC.PutCard16[s, ORD[val.body[i34].recipient.report]];
   CrRPC.PutCard16[s, ORD[val.body[i34].reason]];
   ENDLOOP;
  };

 MProc31: PROC [h: CrRPC.Handle, s: CrRPC.STREAM, val: MailTransportP17V5.Opaque] ~ {
  CrRPC.PutCard16[s, val.length];
  FOR i35: CARDINAL IN [0..val.length) DO
   CrRPC.PutCard16[s, val.body[i35]];
   ENDLOOP;
  };

 MProc28: PROC [h: CrRPC.Handle, s: CrRPC.STREAM, val: MailTransportP17V5.GatewaySpecInfo] ~ {
  CrRPC.PutCard16[s, val.length];
  FOR i36: CARDINAL IN [0..val.length) DO
   CrRPC.PutRope[s, val.body[i36].type];
   CrRPC.PutRope[s, val.body[i36].value];
   ENDLOOP;
  };

}...