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
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;
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;
};
};
}...