DIRECTORY CrRPC, TimeP15V2, AuthenticationP14V2, BulkDataP0V1, PrintingP4V3; PrintingP4V3ServerImpl: CEDAR PROGRAM IMPORTS CrRPC, PrintingP4V3 ~ { OPEN PrintingP4V3; Server: CrRPC.ServerProc ~ { ENABLE { PrintingP4V3.TransferError => { -- (12) beginError[h, 12]; CrRPC.PutCARDINAL[h, ORD[problem]]; GO TO Finished; }; PrintingP4V3.InsufficientSpoolSpace => { -- (1) beginError[h, 1]; GO TO Finished; }; PrintingP4V3.Busy => { -- (0) beginError[h, 0]; GO TO Finished; }; PrintingP4V3.SpoolingQueueFull => { -- (7) beginError[h, 7]; GO TO Finished; }; PrintingP4V3.SpoolingDisabled => { -- (6) beginError[h, 6]; GO TO Finished; }; PrintingP4V3.ConnectionError => { -- (11) beginError[h, 11]; CrRPC.PutCARDINAL[h, ORD[problem]]; GO TO Finished; }; PrintingP4V3.MediumUnavailable => { -- (5) beginError[h, 5]; GO TO Finished; }; PrintingP4V3.InvalidPrintParameters => { -- (2) beginError[h, 2]; GO TO Finished; }; PrintingP4V3.Undefined => { -- (10) beginError[h, 10]; CrRPC.PutCARDINAL[h, problem]; GO TO Finished; }; PrintingP4V3.SystemError => { -- (8) beginError[h, 8]; GO TO Finished; }; PrintingP4V3.MasterTooLarge => { -- (3) beginError[h, 3]; GO TO Finished; }; PrintingP4V3.ServiceUnavailable => { -- (4) beginError[h, 4]; GO TO Finished; }; PrintingP4V3.TooManyClients => { -- (9) beginError[h, 9]; GO TO Finished; }; }; IF (pgmVersion # 3) THEN { beginReject[h, CrRPC.noSuchVersion]; CrRPC.PutCARDINAL[h, 3]; --low CrRPC.PutCARDINAL[h, 3]; --high RETURN }; SELECT proc FROM 2 => { -- GetPrintRequestStatus printRequestID: PrintingP4V3.RequestID; status: PrintingP4V3.RequestStatus; FOR i0: CARDINAL IN [0..5) DO printRequestID[i0] _ CrRPC.GetCARDINAL[h]; ENDLOOP; [status] _ GetPrintRequestStatus[h, printRequestID]; beginReturn[h]; CrRPC.PutCARDINAL[h, status.length]; FOR i0: CARDINAL IN [0..status.length) DO CrRPC.PutCARDINAL[h, ORD[status.body[i0].type]]; WITH status.body[i0] SELECT FROM it: status PrintingP4V3.JobStatus => { CrRPC.PutCARDINAL[h, ORD[it.status]]; }; it: statusMessage PrintingP4V3.JobStatus => { CrRPC.PutROPE[h, it.statusMessage]; }; ENDCASE; ENDLOOP; }; 1 => { -- GetPrinterProperties properties: PrintingP4V3.PrinterProperties; [properties] _ GetPrinterProperties[h]; beginReturn[h]; CrRPC.PutCARDINAL[h, properties.length]; FOR i0: CARDINAL IN [0..properties.length) DO CrRPC.PutCARDINAL[h, ORD[properties.body[i0].type]]; WITH properties.body[i0] SELECT FROM it: ppmedia PrintingP4V3.Property => { CrRPC.PutCARDINAL[h, it.ppmedia.length]; FOR i2: CARDINAL IN [0..it.ppmedia.length) DO CrRPC.PutCARDINAL[h, ORD[it.ppmedia.body[i2].type]]; WITH it.ppmedia.body[i2] SELECT FROM it: paper PrintingP4V3.Medium => { CrRPC.PutCARDINAL[h, ORD[it.paper.type]]; WITH it.paper SELECT FROM it: unknown PrintingP4V3.Paper => { NULL; -- RECORD [] }; it: knownSize PrintingP4V3.Paper => { CrRPC.PutCARDINAL[h, ORD[it.knownSize]]; }; it: otherSize PrintingP4V3.Paper => { CrRPC.PutCARDINAL[h, it.otherSize.width]; CrRPC.PutCARDINAL[h, it.otherSize.length]; }; ENDCASE; }; ENDCASE; ENDLOOP; }; it: ppstaple PrintingP4V3.Property => { CrRPC.PutBOOL[h, it.ppstaple]; }; it: pptwoSided PrintingP4V3.Property => { CrRPC.PutBOOL[h, it.pptwoSided]; }; ENDCASE; ENDLOOP; }; 3 => { -- GetPrinterStatus status: PrintingP4V3.PrinterStatus; [status] _ GetPrinterStatus[h]; beginReturn[h]; CrRPC.PutCARDINAL[h, status.length]; FOR i0: CARDINAL IN [0..status.length) DO CrRPC.PutCARDINAL[h, ORD[status.body[i0].type]]; WITH status.body[i0] SELECT FROM it: spooler PrintingP4V3.ServiceStatus => { CrRPC.PutCARDINAL[h, ORD[it.spooler]]; }; it: formatter PrintingP4V3.ServiceStatus => { CrRPC.PutCARDINAL[h, ORD[it.formatter]]; }; it: printer PrintingP4V3.ServiceStatus => { CrRPC.PutCARDINAL[h, ORD[it.printer]]; }; it: media PrintingP4V3.ServiceStatus => { CrRPC.PutCARDINAL[h, it.media.length]; FOR i2: CARDINAL IN [0..it.media.length) DO CrRPC.PutCARDINAL[h, ORD[it.media.body[i2].type]]; WITH it.media.body[i2] SELECT FROM it: paper PrintingP4V3.Medium => { CrRPC.PutCARDINAL[h, ORD[it.paper.type]]; WITH it.paper SELECT FROM it: unknown PrintingP4V3.Paper => { NULL; -- RECORD [] }; it: knownSize PrintingP4V3.Paper => { CrRPC.PutCARDINAL[h, ORD[it.knownSize]]; }; it: otherSize PrintingP4V3.Paper => { CrRPC.PutCARDINAL[h, it.otherSize.width]; CrRPC.PutCARDINAL[h, it.otherSize.length]; }; ENDCASE; }; ENDCASE; ENDLOOP; }; ENDCASE; ENDLOOP; }; 0 => { -- Print master: CrRPC.BulkDataSource; printAttributes: PrintingP4V3.PrintAttributes; printOptions: PrintingP4V3.PrintOptions; printRequestID: PrintingP4V3.RequestID; TRUSTED { master _ CrRPC.GetBulkDataSource[h]; }; { length1: CARDINAL ~ CrRPC.GetCARDINAL[h]; printAttributes _ NEW[PrintingP4V3.PrintAttributesObject[length1]]; FOR i0: CARDINAL IN [0..length1) DO TRUSTED { tag2: PrintingP4V3.AttributeKind ~ VAL[CrRPC.GetCARDINAL[h]]; SELECT tag2 FROM printObjectName => printAttributes.body[i0] _ [printObjectName[ CrRPC.GetROPE[h]]]; printObjectCreateDate => printAttributes.body[i0] _ [printObjectCreateDate[ CrRPC.GetCARD[h]]]; senderName => printAttributes.body[i0] _ [senderName[ CrRPC.GetROPE[h]]]; ENDCASE; }; ENDLOOP; }; { length1: CARDINAL ~ CrRPC.GetCARDINAL[h]; printOptions _ NEW[PrintingP4V3.PrintOptionsObject[length1]]; FOR i0: CARDINAL IN [0..length1) DO TRUSTED { tag2: PrintingP4V3.OptionKind ~ VAL[CrRPC.GetCARDINAL[h]]; SELECT tag2 FROM printObjectSize => printOptions.body[i0] _ [printObjectSize[ CrRPC.GetCARD[h]]]; recipientName => printOptions.body[i0] _ [recipientName[ CrRPC.GetROPE[h]]]; message => printOptions.body[i0] _ [message[ CrRPC.GetROPE[h]]]; copyCount => printOptions.body[i0] _ [copyCount[ CrRPC.GetCARDINAL[h]]]; pagesToPrint => { x3: PrintingP4V3.DocumentSubrange; x3.beginningPageNumber _ CrRPC.GetCARDINAL[h]; x3.endingPageNumber _ CrRPC.GetCARDINAL[h]; printOptions.body[i0] _ [pagesToPrint[x3]]; }; mediumHint => { x4: PrintingP4V3.Medium; TRUSTED { tag5: PrintingP4V3.MediumKind ~ VAL[CrRPC.GetCARDINAL[h]]; SELECT tag5 FROM paper => { x6: PrintingP4V3.Paper; TRUSTED { tag7: PrintingP4V3.PaperKind ~ VAL[CrRPC.GetCARDINAL[h]]; SELECT tag7 FROM unknown => x6 _ [unknown[unknown~]]; -- RECORD [] knownSize => x6 _ [knownSize[ VAL[CrRPC.GetCARDINAL[h]]]]; otherSize => { x8: PrintingP4V3.PaperDimensions; x8.width _ CrRPC.GetCARDINAL[h]; x8.length _ CrRPC.GetCARDINAL[h]; x6 _ [otherSize[x8]]; }; ENDCASE; }; x4 _ [paper[x6]]; }; ENDCASE; }; printOptions.body[i0] _ [mediumHint[x4]]; }; priorityHint => printOptions.body[i0] _ [priorityHint[ VAL[CrRPC.GetCARDINAL[h]]]]; releaseKey => printOptions.body[i0] _ [releaseKey[ CrRPC.GetCARDINAL[h]]]; staple => printOptions.body[i0] _ [staple[ CrRPC.GetBOOL[h]]]; twoSided => printOptions.body[i0] _ [twoSided[ CrRPC.GetBOOL[h]]]; ENDCASE; }; ENDLOOP; }; [printRequestID] _ Print[h, master, printAttributes, printOptions]; beginReturn[h]; FOR i0: CARDINAL IN [0..5) DO CrRPC.PutCARDINAL[h, printRequestID[i0]]; ENDLOOP; }; ENDCASE => { beginReject[h, CrRPC.noSuchProcedure]; }; EXITS Finished => { NULL }; }; CrRPC.RegisterServerProc[pgm~4, serverProc~Server, pgmVersion~3]; CrRPC.EnsureListener[class~$SPP]; }... jPrintingP4V3ServerImpl.Mesa Copyright (C) 1986 by Xerox Corporation. All rights reserved. Generated by BJackson.pa at October 9, 1986 1:26:29 am PDT using Sirocco [1.0] of September 25, 1986 3:44:23 am PDT [h: Handle, pgm: CARD, pgmVersion: CARDINAL, proc: CARDINAL, beginReturn: BeginReturnProc, beginError: BeginErrorProc, beginReject: BeginRejectProc] ʳ˜šœ™Jšœ>™>Jšœ:™:Jšœ8™8J˜—šÏk ˜ J˜J˜ J˜J˜ J˜ —J˜šÏnœœ˜%Jšœ˜Jšœ˜—J˜šžœ˜Jšœ”™”J˜šœ˜šœ Ïc˜'J˜Jšœœ ˜#Jšœœ ˜J˜—šœ)Ÿ˜/J˜Jšœœ ˜J˜—šœŸ˜J˜Jšœœ ˜J˜—šœ$Ÿ˜*J˜Jšœœ ˜J˜—šœ#Ÿ˜)J˜Jšœœ ˜J˜—šœ"Ÿ˜)J˜Jšœœ ˜#Jšœœ ˜J˜—šœ$Ÿ˜*J˜Jšœœ ˜J˜—šœ)Ÿ˜/J˜Jšœœ ˜J˜—šœŸ˜#J˜J˜Jšœœ ˜J˜—šœŸ˜$J˜Jšœœ ˜J˜—šœ!Ÿ˜'J˜Jšœœ ˜J˜—šœ%Ÿ˜+J˜Jšœœ ˜J˜—šœ!Ÿ˜'J˜Jšœœ ˜J˜—J˜—J˜šœœ˜J˜$JšœŸ˜JšœŸ˜Jš˜J˜—J˜šœ˜šœŸ˜J˜'J˜#J˜šœœœ˜J˜*Jšœ˜—J˜J˜4J˜J˜J˜J˜$šœœœ˜)Jšœœ˜0šœœ˜ ˜&Jšœœ ˜%J˜—˜-J˜#J˜—Jšœ˜—Jšœ˜—J˜—šœŸ˜J˜+J˜J˜J˜'J˜J˜J˜J˜(šœœœ˜-Jšœœ˜4šœœ˜$˜&J˜(šœœœ˜-Jšœœ˜4šœœ˜$˜"Jšœœ˜)šœ œ˜˜#JšœŸ ˜J˜—˜%Jšœœ˜(J˜—˜%J˜)J˜*J˜—Jšœ˜—J˜—Jšœ˜—Jšœ˜—J˜—˜'J˜J˜—˜)J˜ J˜—Jšœ˜—Jšœ˜—J˜—šœŸ˜J˜#J˜J˜J˜J˜J˜J˜J˜$šœœœ˜)Jšœœ˜0šœœ˜ ˜+Jšœœ˜&J˜—˜-Jšœœ˜(J˜—˜+Jšœœ˜&J˜—˜)J˜&šœœœ˜+Jšœœ˜2šœœ˜"˜"Jšœœ˜)šœ œ˜˜#JšœŸ ˜J˜—˜%Jšœœ˜(J˜—˜%J˜)J˜*J˜—Jšœ˜—J˜—Jšœ˜—Jšœ˜—J˜—Jšœ˜—Jšœ˜—J˜—šœŸ˜J˜J˜.J˜(J˜'J˜šœ˜ J˜$J˜—˜Jšœ œ˜)Jšœœ.˜Dšœœœ˜#šœ˜ Jšœ#œ˜=šœ˜J˜SJ˜_J˜IJšœ˜—J˜—Jšœ˜—J˜—˜Jšœ œ˜)Jšœœ+˜>šœœœ˜#šœ˜ Jšœ œ˜:šœ˜J˜PJ˜LJ˜@J˜H˜J˜"J˜.J˜+J˜+J˜—˜˜šœ˜ Jšœ œ˜:šœ˜˜ ˜šœ˜ Jšœœ˜9šœ˜Jšœ%Ÿ ˜1Jšœœ˜:˜J˜!J˜ J˜!J˜J˜—Jšœ˜—J˜——J˜J˜—Jšœ˜—J˜——J˜)J˜—Jšœ7œ˜SJ˜JJ˜>J˜BJšœ˜—J˜—Jšœ˜—J˜—J˜J˜CJ˜J˜J˜šœœœ˜J˜)Jšœ˜—J˜—šœ˜ J˜&J˜——J˜š˜Jšœœ˜—J˜—˜J˜AJ˜!—J˜J˜—…—¸$Õ