PrintingP4V3ClientImpl.Mesa
Copyright (C) 1986 by Xerox Corporation. All rights reserved.
Generated by Demers.pa at January 6, 1987 4:12:29 pm PST
using Sirocco [2.0] of January 6, 1987 4:07:33 pm PST
DIRECTORY
CrRPC,
TimeP15V2,
AuthenticationP14V2,
BulkDataP0V1,
PrintingP4V3;
PrintingP4V3ClientImpl: CEDAR PROGRAM
IMPORTS CrRPC
EXPORTS PrintingP4V3 ~ {
OPEN PrintingP4V3;
Errors
TransferError: PUBLIC TransferErrorType ~ CODE;
InsufficientSpoolSpace: PUBLIC InsufficientSpoolSpaceType ~ CODE;
Busy: PUBLIC BusyType ~ CODE;
SpoolingQueueFull: PUBLIC SpoolingQueueFullType ~ CODE;
SpoolingDisabled: PUBLIC SpoolingDisabledType ~ CODE;
ConnectionError: PUBLIC ConnectionErrorType ~ CODE;
MediumUnavailable: PUBLIC MediumUnavailableType ~ CODE;
InvalidPrintParameters: PUBLIC InvalidPrintParametersType ~ CODE;
Undefined: PUBLIC UndefinedType ~ CODE;
SystemError: PUBLIC SystemErrorType ~ CODE;
MasterTooLarge: PUBLIC MasterTooLargeType ~ CODE;
ServiceUnavailable: PUBLIC ServiceUnavailableType ~ CODE;
TooManyClients: PUBLIC TooManyClientsType ~ CODE;
GetErrorProc
GetError: CrRPC.GetErrorProc ~ {
SELECT errNum FROM
12 => {
problem: TransferProblem;
problem ← VAL[CrRPC.GetCard16[s]];
ERROR TransferError[problem]
};
1 => ERROR InsufficientSpoolSpace[];
0 => ERROR Busy[];
7 => ERROR SpoolingQueueFull[];
6 => ERROR SpoolingDisabled[];
11 => {
problem: ConnectionProblem;
problem ← VAL[CrRPC.GetCard16[s]];
ERROR ConnectionError[problem]
};
5 => ERROR MediumUnavailable[];
2 => ERROR InvalidPrintParameters[];
10 => {
problem: CARD16;
problem ← CrRPC.GetCard16[s];
ERROR Undefined[problem]
};
8 => ERROR SystemError[];
3 => ERROR MasterTooLarge[];
4 => ERROR ServiceUnavailable[];
9 => ERROR TooManyClients[];
ENDCASE => {
ERROR CrRPC.Error[h, remoteError, "Unexpected Remote Error"];
};
};
Remote Procedures --
GetPrintRequestStatus: PUBLIC GetPrintRequestStatusType ~ {
PutArgs: CrRPC.PutArgsProc ~ {
FOR i1: CARDINAL IN [0..5) DO
CrRPC.PutCard16[s, printRequestID[i1]];
ENDLOOP;
};
GetResults: CrRPC.GetResultsProc ~ {
status ← UProc2[h, s];
};
CrRPC.Call[h~h, remotePgm~4, remotePgmVersion~3, remoteProc~2 , putArgs~PutArgs, getResults~GetResults, getError~GetError];
};
GetPrinterProperties: PUBLIC GetPrinterPropertiesType ~ {
PutArgs: CrRPC.PutArgsProc ~ {
};
GetResults: CrRPC.GetResultsProc ~ {
properties ← UProc3[h, s];
};
CrRPC.Call[h~h, remotePgm~4, remotePgmVersion~3, remoteProc~1 , putArgs~PutArgs, getResults~GetResults, getError~GetError];
};
GetPrinterStatus: PUBLIC GetPrinterStatusType ~ {
PutArgs: CrRPC.PutArgsProc ~ {
};
GetResults: CrRPC.GetResultsProc ~ {
status ← UProc4[h, s];
};
CrRPC.Call[h~h, remotePgm~4, remotePgmVersion~3, remoteProc~3 , putArgs~PutArgs, getResults~GetResults, getError~GetError];
};
Print: PUBLIC PrintType ~ {
PutArgs: CrRPC.PutArgsProc ~ {
CrRPC.PutBulkDataSource[h, s, master];
MProc5[h, s, printAttributes];
MProc6[h, s, printOptions];
};
GetResults: CrRPC.GetResultsProc ~ {
FOR i7: CARDINAL IN [0..5) DO
printRequestID[i7] ← CrRPC.GetCard16[s];
ENDLOOP;
};
CrRPC.Call[h~h, remotePgm~4, remotePgmVersion~3, remoteProc~0 , putArgs~PutArgs, getResults~GetResults, getError~GetError];
};
Unmarshal / Marshal Procs --
UProc3: PROC [h: CrRPC.Handle, s: CrRPC.STREAM] RETURNS [res: PrinterProperties] ~ {
{
length9: CARDINAL ~ CrRPC.GetCard16[s];
res ← NEW[PrinterPropertiesObject[length9]];
FOR i8: CARDINAL IN [0..length9) DO
res.body[i8] ← UProc10[h, s];
ENDLOOP;
};
};
UProc2: PROC [h: CrRPC.Handle, s: CrRPC.STREAM] RETURNS [res: RequestStatus] ~ {
{
length12: CARDINAL ~ CrRPC.GetCard16[s];
res ← NEW[RequestStatusObject[length12]];
FOR i11: CARDINAL IN [0..length12) DO
res.body[i11] ← UProc13[h, s];
ENDLOOP;
};
};
UProc4: PROC [h: CrRPC.Handle, s: CrRPC.STREAM] RETURNS [res: PrinterStatus] ~ {
{
length15: CARDINAL ~ CrRPC.GetCard16[s];
res ← NEW[PrinterStatusObject[length15]];
FOR i14: CARDINAL IN [0..length15) DO
res.body[i14] ← UProc16[h, s];
ENDLOOP;
};
};
MProc6: PROC [h: CrRPC.Handle, s: CrRPC.STREAM, val: PrintOptions] ~ {
CrRPC.PutCard16[s, val.length];
FOR i17: CARDINAL IN [0..val.length) DO
MProc18[h, s, val.body[i17]];
ENDLOOP;
};
UProc13: PROC [h: CrRPC.Handle, s: CrRPC.STREAM] RETURNS [res: JobStatus] ~ {
{
tag19: JobStatusKind ~ VAL[CrRPC.GetCard16[s]];
SELECT tag19 FROM
status => {
temp20: InterpressMasterStatus;
temp20 ← VAL[CrRPC.GetCard16[s]];
res ← NEW[JobStatusObject.status ← [status[temp20]]] };
statusMessage => {
temp20: ROPE;
temp20 ← CrRPC.GetRope[s];
res ← NEW[JobStatusObject.statusMessage ← [statusMessage[temp20]]] };
ENDCASE => ERROR;
};
};
MProc5: PROC [h: CrRPC.Handle, s: CrRPC.STREAM, val: PrintAttributes] ~ {
CrRPC.PutCard16[s, val.length];
FOR i21: CARDINAL IN [0..val.length) DO
MProc22[h, s, val.body[i21]];
ENDLOOP;
};
UProc16: PROC [h: CrRPC.Handle, s: CrRPC.STREAM] RETURNS [res: ServiceStatus] ~ {
{
tag23: StatusKind ~ VAL[CrRPC.GetCard16[s]];
SELECT tag23 FROM
spooler => {
temp24: SpoolerStatus;
temp24 ← VAL[CrRPC.GetCard16[s]];
res ← NEW[ServiceStatusObject.spooler ← [spooler[temp24]]] };
formatter => {
temp24: FormatterStatus;
temp24 ← VAL[CrRPC.GetCard16[s]];
res ← NEW[ServiceStatusObject.formatter ← [formatter[temp24]]] };
printer => {
temp24: MarkingEngineStatus;
temp24 ← VAL[CrRPC.GetCard16[s]];
res ← NEW[ServiceStatusObject.printer ← [printer[temp24]]] };
media => {
temp24: Media;
temp24 ← UProc25[h, s];
res ← NEW[ServiceStatusObject.media ← [media[temp24]]] };
ENDCASE => ERROR;
};
};
UProc10: PROC [h: CrRPC.Handle, s: CrRPC.STREAM] RETURNS [res: Property] ~ {
{
tag26: PropertyKind ~ VAL[CrRPC.GetCard16[s]];
SELECT tag26 FROM
ppmedia => {
temp27: Media;
temp27 ← UProc25[h, s];
res ← NEW[PropertyObject.ppmedia ← [ppmedia[temp27]]] };
ppstaple => {
temp27: BOOLEAN;
temp27 ← CrRPC.GetBool[s];
res ← NEW[PropertyObject.ppstaple ← [ppstaple[temp27]]] };
pptwoSided => {
temp27: BOOLEAN;
temp27 ← CrRPC.GetBool[s];
res ← NEW[PropertyObject.pptwoSided ← [pptwoSided[temp27]]] };
ENDCASE => ERROR;
};
};
MProc18: PROC [h: CrRPC.Handle, s: CrRPC.STREAM, val: Option] ~ {
CrRPC.PutCard16[s, ORD[val.type]];
WITH val SELECT FROM
it: REF OptionObject.printObjectSize => {
CrRPC.PutCard32[s, it^.printObjectSize];
};
it: REF OptionObject.recipientName => {
CrRPC.PutRope[s, it^.recipientName];
};
it: REF OptionObject.message => {
CrRPC.PutRope[s, it^.message];
};
it: REF OptionObject.copyCount => {
CrRPC.PutCard16[s, it^.copyCount];
};
it: REF OptionObject.pagesToPrint => {
CrRPC.PutCard16[s, it^.pagesToPrint.beginningPageNumber];
CrRPC.PutCard16[s, it^.pagesToPrint.endingPageNumber];
};
it: REF OptionObject.mediumHint => {
MProc29[h, s, it^.mediumHint];
};
it: REF OptionObject.priorityHint => {
CrRPC.PutCard16[s, ORD[it^.priorityHint]];
};
it: REF OptionObject.releaseKey => {
CrRPC.PutCard16[s, it^.releaseKey];
};
it: REF OptionObject.staple => {
CrRPC.PutBool[s, it^.staple];
};
it: REF OptionObject.twoSided => {
CrRPC.PutBool[s, it^.twoSided];
};
ENDCASE;
};
MProc22: PROC [h: CrRPC.Handle, s: CrRPC.STREAM, val: Attribute] ~ {
CrRPC.PutCard16[s, ORD[val.type]];
WITH val SELECT FROM
it: REF AttributeObject.printObjectName => {
CrRPC.PutRope[s, it^.printObjectName];
};
it: REF AttributeObject.printObjectCreateDate => {
CrRPC.PutCard32[s, it^.printObjectCreateDate];
};
it: REF AttributeObject.senderName => {
CrRPC.PutRope[s, it^.senderName];
};
ENDCASE;
};
UProc25: PROC [h: CrRPC.Handle, s: CrRPC.STREAM] RETURNS [res: Media] ~ {
{
length32: CARDINAL ~ CrRPC.GetCard16[s];
res ← NEW[MediaObject[length32]];
FOR i31: CARDINAL IN [0..length32) DO
res.body[i31] ← UProc33[h, s];
ENDLOOP;
};
};
MProc29: PROC [h: CrRPC.Handle, s: CrRPC.STREAM, val: Medium] ~ {
CrRPC.PutCard16[s, ORD[val.type]];
WITH val SELECT FROM
it: REF MediumObject.paper => {
MProc35[h, s, it^.paper];
};
ENDCASE;
};
UProc33: PROC [h: CrRPC.Handle, s: CrRPC.STREAM] RETURNS [res: Medium] ~ {
{
tag36: MediumKind ~ VAL[CrRPC.GetCard16[s]];
SELECT tag36 FROM
paper => {
temp37: Paper;
temp37 ← UProc38[h, s];
res ← NEW[MediumObject.paper ← [paper[temp37]]] };
ENDCASE => ERROR;
};
};
MProc35: PROC [h: CrRPC.Handle, s: CrRPC.STREAM, val: Paper] ~ {
CrRPC.PutCard16[s, ORD[val.type]];
WITH val SELECT FROM
it: REF PaperObject.unknown => {
NULL; -- RECORD [] --
};
it: REF PaperObject.knownSize => {
CrRPC.PutCard16[s, ORD[it^.knownSize]];
};
it: REF PaperObject.otherSize => {
CrRPC.PutCard16[s, it^.otherSize.width];
CrRPC.PutCard16[s, it^.otherSize.length];
};
ENDCASE;
};
UProc38: PROC [h: CrRPC.Handle, s: CrRPC.STREAM] RETURNS [res: Paper] ~ {
{
tag40: PaperKind ~ VAL[CrRPC.GetCard16[s]];
SELECT tag40 FROM
unknown => {
temp41: EmptyRecord;
temp41.null ← 0;
res ← NEW[PaperObject.unknown ← [unknown[temp41]]] };
knownSize => {
temp41: KnownPaperSize;
temp41 ← VAL[CrRPC.GetCard16[s]];
res ← NEW[PaperObject.knownSize ← [knownSize[temp41]]] };
otherSize => {
temp41: PaperDimensions;
temp41.width ← CrRPC.GetCard16[s];
temp41.length ← CrRPC.GetCard16[s];
res ← NEW[PaperObject.otherSize ← [otherSize[temp41]]] };
ENDCASE => ERROR;
};
};
}...