DIRECTORY CrRPC, CHNameP2V0, AuthenticationP14V2, AlpineEnvironmentP2201V1, BulkDataP0V1, AlpineP2202V2; AlpineP2202V2ServerImpl: CEDAR PROGRAM IMPORTS CrRPC, AlpineP2202V2 ~ { OPEN AlpineP2202V2; GetReferencePatternCaller: PROC [h: CrRPC.Handle, s: CrRPC.STREAM, beginReturn: CrRPC.BeginReturnProc] ~ { session: Session; openFileID: CARD32; referencePattern: AlpineEnvironmentP2201V1.ReferencePattern; replyVerifier: AuthenticationP14V2.SeqWords; { session.token _ CrRPC.GetCard32[s]; session.verifier _ UProc88[h, s]; }; { openFileID _ CrRPC.GetCard32[s]; }; [referencePattern, replyVerifier] _ GetReferencePattern[h, session, openFileID]; beginReturn[h]; { CrRPC.PutCard16[s, ORD[referencePattern]]; }; { MProc89[h, s, replyVerifier]; }; }; WritePropertiesCaller: PROC [h: CrRPC.Handle, s: CrRPC.STREAM, beginReturn: CrRPC.BeginReturnProc] ~ { session: Session; openFileID: CARD32; properties: AlpineEnvironmentP2201V1.Properties; lock: AlpineEnvironmentP2201V1.LockOption; replyVerifier: AuthenticationP14V2.SeqWords; { session.token _ CrRPC.GetCard32[s]; session.verifier _ UProc88[h, s]; }; { openFileID _ CrRPC.GetCard32[s]; }; { properties _ UProc90[h, s]; }; { lock.mode _ VAL[CrRPC.GetCard16[s]]; lock.ifConflict _ VAL[CrRPC.GetCard16[s]]; }; [replyVerifier] _ WriteProperties[h, session, openFileID, properties, lock]; beginReturn[h]; { MProc89[h, s, replyVerifier]; }; }; LogoffCaller: PROC [h: CrRPC.Handle, s: CrRPC.STREAM, beginReturn: CrRPC.BeginReturnProc] ~ { session: Session; { session.token _ CrRPC.GetCard32[s]; session.verifier _ UProc88[h, s]; }; [] _ Logoff[h, session]; beginReturn[h]; }; ReadPropertiesCaller: PROC [h: CrRPC.Handle, s: CrRPC.STREAM, beginReturn: CrRPC.BeginReturnProc] ~ { session: Session; openFileID: CARD32; desiredProperties: AlpineEnvironmentP2201V1.PropertySet; lock: AlpineEnvironmentP2201V1.LockOption; properties: AlpineEnvironmentP2201V1.Properties; replyVerifier: AuthenticationP14V2.SeqWords; { session.token _ CrRPC.GetCard32[s]; session.verifier _ UProc88[h, s]; }; { openFileID _ CrRPC.GetCard32[s]; }; { FOR i91: CARDINAL IN [0..8) DO desiredProperties[i91] _ CrRPC.GetBool[s]; ENDLOOP; }; { lock.mode _ VAL[CrRPC.GetCard16[s]]; lock.ifConflict _ VAL[CrRPC.GetCard16[s]]; }; [properties, replyVerifier] _ ReadProperties[h, session, openFileID, desiredProperties, lock]; beginReturn[h]; { MProc92[h, s, properties]; }; { MProc89[h, s, replyVerifier]; }; }; GetUniversalFileCaller: PROC [h: CrRPC.Handle, s: CrRPC.STREAM, beginReturn: CrRPC.BeginReturnProc] ~ { session: Session; openFileID: CARD32; universalFile: AlpineEnvironmentP2201V1.UniversalFile; replyVerifier: AuthenticationP14V2.SeqWords; { session.token _ CrRPC.GetCard32[s]; session.verifier _ UProc88[h, s]; }; { openFileID _ CrRPC.GetCard32[s]; }; [universalFile, replyVerifier] _ GetUniversalFile[h, session, openFileID]; beginReturn[h]; { FOR i93: CARDINAL IN [0..5) DO CrRPC.PutCard16[s, universalFile.volumeID.vgid[i93]]; ENDLOOP; FOR i94: CARDINAL IN [0..2) DO CrRPC.PutCard16[s, universalFile.fileID.id[i94]]; ENDLOOP; FOR i95: CARDINAL IN [0..2) DO CrRPC.PutCard16[s, universalFile.fileID.da[i95]]; ENDLOOP; }; { MProc89[h, s, replyVerifier]; }; }; SetReferencePatternCaller: PROC [h: CrRPC.Handle, s: CrRPC.STREAM, beginReturn: CrRPC.BeginReturnProc] ~ { session: Session; openFileID: CARD32; referencePattern: AlpineEnvironmentP2201V1.ReferencePattern; replyVerifier: AuthenticationP14V2.SeqWords; { session.token _ CrRPC.GetCard32[s]; session.verifier _ UProc88[h, s]; }; { openFileID _ CrRPC.GetCard32[s]; }; { referencePattern _ VAL[CrRPC.GetCard16[s]]; }; [replyVerifier] _ SetReferencePattern[h, session, openFileID, referencePattern]; beginReturn[h]; { MProc89[h, s, replyVerifier]; }; }; FinishTransactionCaller: PROC [h: CrRPC.Handle, s: CrRPC.STREAM, beginReturn: CrRPC.BeginReturnProc] ~ { session: Session; transID: AlpineEnvironmentP2201V1.TransID; requestedOutcome: AlpineEnvironmentP2201V1.CommitOrAbort; continue: BOOLEAN; outcome: AlpineEnvironmentP2201V1.Outcome; newTrans: AlpineEnvironmentP2201V1.TransID; replyVerifier: AuthenticationP14V2.SeqWords; { session.token _ CrRPC.GetCard32[s]; session.verifier _ UProc88[h, s]; }; { FOR i96: CARDINAL IN [0..9) DO transID[i96] _ CrRPC.GetCard16[s]; ENDLOOP; }; { requestedOutcome _ VAL[CrRPC.GetCard16[s]]; }; { continue _ CrRPC.GetBool[s]; }; [outcome, newTrans, replyVerifier] _ FinishTransaction[h, session, transID, requestedOutcome, continue]; beginReturn[h]; { CrRPC.PutCard16[s, ORD[outcome]]; }; { FOR i97: CARDINAL IN [0..9) DO CrRPC.PutCard16[s, newTrans[i97]]; ENDLOOP; }; { MProc89[h, s, replyVerifier]; }; }; ReadPagesCaller: PROC [h: CrRPC.Handle, s: CrRPC.STREAM, beginReturn: CrRPC.BeginReturnProc] ~ { session: Session; openFileID: CARD32; pageRun: AlpineEnvironmentP2201V1.PageRun; lock: AlpineEnvironmentP2201V1.LockOption; content: CrRPC.BulkDataSink; replyVerifier: AuthenticationP14V2.SeqWords; { session.token _ CrRPC.GetCard32[s]; session.verifier _ UProc88[h, s]; }; { openFileID _ CrRPC.GetCard32[s]; }; { pageRun.firstPage _ CrRPC.GetInt32[s]; pageRun.count _ CrRPC.GetCard16[s]; }; { lock.mode _ VAL[CrRPC.GetCard16[s]]; lock.ifConflict _ VAL[CrRPC.GetCard16[s]]; }; TRUSTED { content _ CrRPC.GetBulkDataSink[h, s]; }; [replyVerifier] _ ReadPages[h, session, openFileID, pageRun, lock, content]; beginReturn[h]; { MProc89[h, s, replyVerifier]; }; }; CreateOwnerCaller: PROC [h: CrRPC.Handle, s: CrRPC.STREAM, beginReturn: CrRPC.BeginReturnProc] ~ { session: Session; transID: AlpineEnvironmentP2201V1.TransID; volumeGroupID: AlpineEnvironmentP2201V1.VolumeGroupID; owner: ROPE; properties: AlpineEnvironmentP2201V1.OwnerProperties; enforceTotalQuota: BOOLEAN; spaceLeftOnVolumeGroup: INT32; replyVerifier: AuthenticationP14V2.SeqWords; { session.token _ CrRPC.GetCard32[s]; session.verifier _ UProc88[h, s]; }; { FOR i98: CARDINAL IN [0..9) DO transID[i98] _ CrRPC.GetCard16[s]; ENDLOOP; }; { FOR i99: CARDINAL IN [0..5) DO volumeGroupID.vgid[i99] _ CrRPC.GetCard16[s]; ENDLOOP; }; { owner _ CrRPC.GetRope[s]; }; { properties _ UProc100[h, s]; }; { enforceTotalQuota _ CrRPC.GetBool[s]; }; [spaceLeftOnVolumeGroup, replyVerifier] _ CreateOwner[h, session, transID, volumeGroupID, owner, properties, enforceTotalQuota]; beginReturn[h]; { CrRPC.PutInt32[s, spaceLeftOnVolumeGroup]; }; { MProc89[h, s, replyVerifier]; }; }; WritePagesCaller: PROC [h: CrRPC.Handle, s: CrRPC.STREAM, beginReturn: CrRPC.BeginReturnProc] ~ { session: Session; openFileID: CARD32; pageRun: AlpineEnvironmentP2201V1.PageRun; lock: AlpineEnvironmentP2201V1.LockOption; content: CrRPC.BulkDataSource; replyVerifier: AuthenticationP14V2.SeqWords; { session.token _ CrRPC.GetCard32[s]; session.verifier _ UProc88[h, s]; }; { openFileID _ CrRPC.GetCard32[s]; }; { pageRun.firstPage _ CrRPC.GetInt32[s]; pageRun.count _ CrRPC.GetCard16[s]; }; { lock.mode _ VAL[CrRPC.GetCard16[s]]; lock.ifConflict _ VAL[CrRPC.GetCard16[s]]; }; TRUSTED { content _ CrRPC.GetBulkDataSource[h, s]; }; [replyVerifier] _ WritePages[h, session, openFileID, pageRun, lock, content]; beginReturn[h]; { MProc89[h, s, replyVerifier]; }; }; GetGroupCaller: PROC [h: CrRPC.Handle, s: CrRPC.STREAM, beginReturn: CrRPC.BeginReturnProc] ~ { session: Session; transID: AlpineEnvironmentP2201V1.TransID; volumeGroupID: AlpineEnvironmentP2201V1.VolumeGroupID; lock: AlpineEnvironmentP2201V1.LockOption; volumes: AlpineEnvironmentP2201V1.VolumeIDs; replyVerifier: AuthenticationP14V2.SeqWords; { session.token _ CrRPC.GetCard32[s]; session.verifier _ UProc88[h, s]; }; { FOR i101: CARDINAL IN [0..9) DO transID[i101] _ CrRPC.GetCard16[s]; ENDLOOP; }; { FOR i102: CARDINAL IN [0..5) DO volumeGroupID.vgid[i102] _ CrRPC.GetCard16[s]; ENDLOOP; }; { lock.mode _ VAL[CrRPC.GetCard16[s]]; lock.ifConflict _ VAL[CrRPC.GetCard16[s]]; }; [volumes, replyVerifier] _ GetGroup[h, session, transID, volumeGroupID, lock]; beginReturn[h]; { MProc103[h, s, volumes]; }; { MProc89[h, s, replyVerifier]; }; }; DestroyOwnerCaller: PROC [h: CrRPC.Handle, s: CrRPC.STREAM, beginReturn: CrRPC.BeginReturnProc] ~ { session: Session; transID: AlpineEnvironmentP2201V1.TransID; volumeGroupID: AlpineEnvironmentP2201V1.VolumeGroupID; owner: ROPE; replyVerifier: AuthenticationP14V2.SeqWords; { session.token _ CrRPC.GetCard32[s]; session.verifier _ UProc88[h, s]; }; { FOR i104: CARDINAL IN [0..9) DO transID[i104] _ CrRPC.GetCard16[s]; ENDLOOP; }; { FOR i105: CARDINAL IN [0..5) DO volumeGroupID.vgid[i105] _ CrRPC.GetCard16[s]; ENDLOOP; }; { owner _ CrRPC.GetRope[s]; }; [replyVerifier] _ DestroyOwner[h, session, transID, volumeGroupID, owner]; beginReturn[h]; { MProc89[h, s, replyVerifier]; }; }; GetSizeCaller: PROC [h: CrRPC.Handle, s: CrRPC.STREAM, beginReturn: CrRPC.BeginReturnProc] ~ { session: Session; openFileID: CARD32; lock: AlpineEnvironmentP2201V1.LockOption; size: INT32; replyVerifier: AuthenticationP14V2.SeqWords; { session.token _ CrRPC.GetCard32[s]; session.verifier _ UProc88[h, s]; }; { openFileID _ CrRPC.GetCard32[s]; }; { lock.mode _ VAL[CrRPC.GetCard16[s]]; lock.ifConflict _ VAL[CrRPC.GetCard16[s]]; }; [size, replyVerifier] _ GetSize[h, session, openFileID, lock]; beginReturn[h]; { CrRPC.PutInt32[s, size]; }; { MProc89[h, s, replyVerifier]; }; }; ReorganizeOwnerDBCaller: PROC [h: CrRPC.Handle, s: CrRPC.STREAM, beginReturn: CrRPC.BeginReturnProc] ~ { session: Session; transID: AlpineEnvironmentP2201V1.TransID; volumeGroupID: AlpineEnvironmentP2201V1.VolumeGroupID; nEntries: INT32; replyVerifier: AuthenticationP14V2.SeqWords; { session.token _ CrRPC.GetCard32[s]; session.verifier _ UProc88[h, s]; }; { FOR i106: CARDINAL IN [0..9) DO transID[i106] _ CrRPC.GetCard16[s]; ENDLOOP; }; { FOR i107: CARDINAL IN [0..5) DO volumeGroupID.vgid[i107] _ CrRPC.GetCard16[s]; ENDLOOP; }; { nEntries _ CrRPC.GetInt32[s]; }; [replyVerifier] _ ReorganizeOwnerDB[h, session, transID, volumeGroupID, nEntries]; beginReturn[h]; { MProc89[h, s, replyVerifier]; }; }; GetRecoveryOptionCaller: PROC [h: CrRPC.Handle, s: CrRPC.STREAM, beginReturn: CrRPC.BeginReturnProc] ~ { session: Session; openFileID: CARD32; recoveryOption: AlpineEnvironmentP2201V1.RecoveryOption; replyVerifier: AuthenticationP14V2.SeqWords; { session.token _ CrRPC.GetCard32[s]; session.verifier _ UProc88[h, s]; }; { openFileID _ CrRPC.GetCard32[s]; }; [recoveryOption, replyVerifier] _ GetRecoveryOption[h, session, openFileID]; beginReturn[h]; { CrRPC.PutCard16[s, ORD[recoveryOption]]; }; { MProc89[h, s, replyVerifier]; }; }; ReadOwnerPropertiesCaller: PROC [h: CrRPC.Handle, s: CrRPC.STREAM, beginReturn: CrRPC.BeginReturnProc] ~ { session: Session; transID: AlpineEnvironmentP2201V1.TransID; volumeGroupID: AlpineEnvironmentP2201V1.VolumeGroupID; owner: ROPE; desiredProperties: AlpineEnvironmentP2201V1.OwnerPropertySet; properties: AlpineEnvironmentP2201V1.OwnerProperties; replyVerifier: AuthenticationP14V2.SeqWords; { session.token _ CrRPC.GetCard32[s]; session.verifier _ UProc88[h, s]; }; { FOR i108: CARDINAL IN [0..9) DO transID[i108] _ CrRPC.GetCard16[s]; ENDLOOP; }; { FOR i109: CARDINAL IN [0..5) DO volumeGroupID.vgid[i109] _ CrRPC.GetCard16[s]; ENDLOOP; }; { owner _ CrRPC.GetRope[s]; }; { FOR i110: CARDINAL IN [0..5) DO desiredProperties[i110] _ CrRPC.GetBool[s]; ENDLOOP; }; [properties, replyVerifier] _ ReadOwnerProperties[h, session, transID, volumeGroupID, owner, desiredProperties]; beginReturn[h]; { MProc111[h, s, properties]; }; { MProc89[h, s, replyVerifier]; }; }; NextOwnerCaller: PROC [h: CrRPC.Handle, s: CrRPC.STREAM, beginReturn: CrRPC.BeginReturnProc] ~ { session: Session; transID: AlpineEnvironmentP2201V1.TransID; volumeGroupID: AlpineEnvironmentP2201V1.VolumeGroupID; previousOwner: ROPE; desiredProperties: AlpineEnvironmentP2201V1.OwnerPropertySet; owner: ROPE; properties: AlpineEnvironmentP2201V1.OwnerProperties; replyVerifier: AuthenticationP14V2.SeqWords; { session.token _ CrRPC.GetCard32[s]; session.verifier _ UProc88[h, s]; }; { FOR i112: CARDINAL IN [0..9) DO transID[i112] _ CrRPC.GetCard16[s]; ENDLOOP; }; { FOR i113: CARDINAL IN [0..5) DO volumeGroupID.vgid[i113] _ CrRPC.GetCard16[s]; ENDLOOP; }; { previousOwner _ CrRPC.GetRope[s]; }; { FOR i114: CARDINAL IN [0..5) DO desiredProperties[i114] _ CrRPC.GetBool[s]; ENDLOOP; }; [owner, properties, replyVerifier] _ NextOwner[h, session, transID, volumeGroupID, previousOwner, desiredProperties]; beginReturn[h]; { CrRPC.PutRope[s, owner]; }; { MProc111[h, s, properties]; }; { MProc89[h, s, replyVerifier]; }; }; GetEnclosingGroupCaller: PROC [h: CrRPC.Handle, s: CrRPC.STREAM, beginReturn: CrRPC.BeginReturnProc] ~ { session: Session; transID: AlpineEnvironmentP2201V1.TransID; volumeID: AlpineEnvironmentP2201V1.VolumeID; lock: AlpineEnvironmentP2201V1.LockOption; volumeGroupID: AlpineEnvironmentP2201V1.VolumeGroupID; replyVerifier: AuthenticationP14V2.SeqWords; { session.token _ CrRPC.GetCard32[s]; session.verifier _ UProc88[h, s]; }; { FOR i115: CARDINAL IN [0..9) DO transID[i115] _ CrRPC.GetCard16[s]; ENDLOOP; }; { FOR i116: CARDINAL IN [0..5) DO volumeID.vgid[i116] _ CrRPC.GetCard16[s]; ENDLOOP; }; { lock.mode _ VAL[CrRPC.GetCard16[s]]; lock.ifConflict _ VAL[CrRPC.GetCard16[s]]; }; [volumeGroupID, replyVerifier] _ GetEnclosingGroup[h, session, transID, volumeID, lock]; beginReturn[h]; { FOR i117: CARDINAL IN [0..5) DO CrRPC.PutCard16[s, volumeGroupID.vgid[i117]]; ENDLOOP; }; { MProc89[h, s, replyVerifier]; }; }; GetTransIDCaller: PROC [h: CrRPC.Handle, s: CrRPC.STREAM, beginReturn: CrRPC.BeginReturnProc] ~ { session: Session; openFileID: CARD32; transID: AlpineEnvironmentP2201V1.TransID; replyVerifier: AuthenticationP14V2.SeqWords; { session.token _ CrRPC.GetCard32[s]; session.verifier _ UProc88[h, s]; }; { openFileID _ CrRPC.GetCard32[s]; }; [transID, replyVerifier] _ GetTransID[h, session, openFileID]; beginReturn[h]; { FOR i118: CARDINAL IN [0..9) DO CrRPC.PutCard16[s, transID[i118]]; ENDLOOP; }; { MProc89[h, s, replyVerifier]; }; }; UnlockPagesCaller: PROC [h: CrRPC.Handle, s: CrRPC.STREAM, beginReturn: CrRPC.BeginReturnProc] ~ { session: Session; openFileID: CARD32; pageRun: AlpineEnvironmentP2201V1.PageRun; replyVerifier: AuthenticationP14V2.SeqWords; { session.token _ CrRPC.GetCard32[s]; session.verifier _ UProc88[h, s]; }; { openFileID _ CrRPC.GetCard32[s]; }; { pageRun.firstPage _ CrRPC.GetInt32[s]; pageRun.count _ CrRPC.GetCard16[s]; }; [replyVerifier] _ UnlockPages[h, session, openFileID, pageRun]; beginReturn[h]; { MProc89[h, s, replyVerifier]; }; }; UnlockFileCaller: PROC [h: CrRPC.Handle, s: CrRPC.STREAM, beginReturn: CrRPC.BeginReturnProc] ~ { session: Session; openFileID: CARD32; replyVerifier: AuthenticationP14V2.SeqWords; { session.token _ CrRPC.GetCard32[s]; session.verifier _ UProc88[h, s]; }; { openFileID _ CrRPC.GetCard32[s]; }; [replyVerifier] _ UnlockFile[h, session, openFileID]; beginReturn[h]; { MProc89[h, s, replyVerifier]; }; }; SetLockOptionCaller: PROC [h: CrRPC.Handle, s: CrRPC.STREAM, beginReturn: CrRPC.BeginReturnProc] ~ { session: Session; openFileID: CARD32; lock: AlpineEnvironmentP2201V1.LockOption; replyVerifier: AuthenticationP14V2.SeqWords; { session.token _ CrRPC.GetCard32[s]; session.verifier _ UProc88[h, s]; }; { openFileID _ CrRPC.GetCard32[s]; }; { lock.mode _ VAL[CrRPC.GetCard16[s]]; lock.ifConflict _ VAL[CrRPC.GetCard16[s]]; }; [replyVerifier] _ SetLockOption[h, session, openFileID, lock]; beginReturn[h]; { MProc89[h, s, replyVerifier]; }; }; AssertAlpineWheelCaller: PROC [h: CrRPC.Handle, s: CrRPC.STREAM, beginReturn: CrRPC.BeginReturnProc] ~ { session: Session; transID: AlpineEnvironmentP2201V1.TransID; enable: BOOLEAN; replyVerifier: AuthenticationP14V2.SeqWords; { session.token _ CrRPC.GetCard32[s]; session.verifier _ UProc88[h, s]; }; { FOR i119: CARDINAL IN [0..9) DO transID[i119] _ CrRPC.GetCard16[s]; ENDLOOP; }; { enable _ CrRPC.GetBool[s]; }; [replyVerifier] _ AssertAlpineWheel[h, session, transID, enable]; beginReturn[h]; { MProc89[h, s, replyVerifier]; }; }; CreateTransactionCaller: PROC [h: CrRPC.Handle, s: CrRPC.STREAM, beginReturn: CrRPC.BeginReturnProc] ~ { session: Session; createLocalWorker: BOOLEAN; transID: AlpineEnvironmentP2201V1.TransID; replyVerifier: AuthenticationP14V2.SeqWords; { session.token _ CrRPC.GetCard32[s]; session.verifier _ UProc88[h, s]; }; { createLocalWorker _ CrRPC.GetBool[s]; }; [transID, replyVerifier] _ CreateTransaction[h, session, createLocalWorker]; beginReturn[h]; { FOR i120: CARDINAL IN [0..9) DO CrRPC.PutCard16[s, transID[i120]]; ENDLOOP; }; { MProc89[h, s, replyVerifier]; }; }; LogonCaller: PROC [h: CrRPC.Handle, s: CrRPC.STREAM, beginReturn: CrRPC.BeginReturnProc] ~ { service: CHNameP2V0.ThreePartName; credentials: AuthenticationP14V2.Credentials; gvCredentials: GVCredentials; verifier: AuthenticationP14V2.SeqWords; session: Session; replyVerifier: AuthenticationP14V2.SeqWords; { service.organization _ CrRPC.GetRope[s]; service.domain _ CrRPC.GetRope[s]; service.object _ CrRPC.GetRope[s]; }; { credentials.type _ VAL[CrRPC.GetCard16[s]]; credentials.value _ UProc88[h, s]; }; { gvCredentials.name _ CrRPC.GetRope[s]; gvCredentials.pwd _ CrRPC.GetRope[s]; }; { verifier _ UProc88[h, s]; }; [session, replyVerifier] _ Logon[h, service, credentials, gvCredentials, verifier]; beginReturn[h]; { CrRPC.PutCard32[s, session.token]; MProc89[h, s, session.verifier]; }; { MProc89[h, s, replyVerifier]; }; }; GetNextGroupCaller: PROC [h: CrRPC.Handle, s: CrRPC.STREAM, beginReturn: CrRPC.BeginReturnProc] ~ { session: Session; transID: AlpineEnvironmentP2201V1.TransID; previousGroup: AlpineEnvironmentP2201V1.VolumeGroupID; lock: AlpineEnvironmentP2201V1.LockOption; volumeGroupID: AlpineEnvironmentP2201V1.VolumeGroupID; replyVerifier: AuthenticationP14V2.SeqWords; { session.token _ CrRPC.GetCard32[s]; session.verifier _ UProc88[h, s]; }; { FOR i121: CARDINAL IN [0..9) DO transID[i121] _ CrRPC.GetCard16[s]; ENDLOOP; }; { FOR i122: CARDINAL IN [0..5) DO previousGroup.vgid[i122] _ CrRPC.GetCard16[s]; ENDLOOP; }; { lock.mode _ VAL[CrRPC.GetCard16[s]]; lock.ifConflict _ VAL[CrRPC.GetCard16[s]]; }; [volumeGroupID, replyVerifier] _ GetNextGroup[h, session, transID, previousGroup, lock]; beginReturn[h]; { FOR i123: CARDINAL IN [0..5) DO CrRPC.PutCard16[s, volumeGroupID.vgid[i123]]; ENDLOOP; }; { MProc89[h, s, replyVerifier]; }; }; DeleteCaller: PROC [h: CrRPC.Handle, s: CrRPC.STREAM, beginReturn: CrRPC.BeginReturnProc] ~ { session: Session; openFileID: CARD32; replyVerifier: AuthenticationP14V2.SeqWords; { session.token _ CrRPC.GetCard32[s]; session.verifier _ UProc88[h, s]; }; { openFileID _ CrRPC.GetCard32[s]; }; [replyVerifier] _ Delete[h, session, openFileID]; beginReturn[h]; { MProc89[h, s, replyVerifier]; }; }; GetLockOptionCaller: PROC [h: CrRPC.Handle, s: CrRPC.STREAM, beginReturn: CrRPC.BeginReturnProc] ~ { session: Session; openFileID: CARD32; lock: AlpineEnvironmentP2201V1.LockOption; replyVerifier: AuthenticationP14V2.SeqWords; { session.token _ CrRPC.GetCard32[s]; session.verifier _ UProc88[h, s]; }; { openFileID _ CrRPC.GetCard32[s]; }; [lock, replyVerifier] _ GetLockOption[h, session, openFileID]; beginReturn[h]; { CrRPC.PutCard16[s, ORD[lock.mode]]; CrRPC.PutCard16[s, ORD[lock.ifConflict]]; }; { MProc89[h, s, replyVerifier]; }; }; UnlockVersionCaller: PROC [h: CrRPC.Handle, s: CrRPC.STREAM, beginReturn: CrRPC.BeginReturnProc] ~ { session: Session; openFileID: CARD32; replyVerifier: AuthenticationP14V2.SeqWords; { session.token _ CrRPC.GetCard32[s]; session.verifier _ UProc88[h, s]; }; { openFileID _ CrRPC.GetCard32[s]; }; [replyVerifier] _ UnlockVersion[h, session, openFileID]; beginReturn[h]; { MProc89[h, s, replyVerifier]; }; }; CreateWorkerCaller: PROC [h: CrRPC.Handle, s: CrRPC.STREAM, beginReturn: CrRPC.BeginReturnProc] ~ { session: Session; transID: AlpineEnvironmentP2201V1.TransID; coordinator: ROPE; replyVerifier: AuthenticationP14V2.SeqWords; { session.token _ CrRPC.GetCard32[s]; session.verifier _ UProc88[h, s]; }; { FOR i124: CARDINAL IN [0..9) DO transID[i124] _ CrRPC.GetCard16[s]; ENDLOOP; }; { coordinator _ CrRPC.GetRope[s]; }; [replyVerifier] _ CreateWorker[h, session, transID, coordinator]; beginReturn[h]; { MProc89[h, s, replyVerifier]; }; }; UnlockOwnerDBCaller: PROC [h: CrRPC.Handle, s: CrRPC.STREAM, beginReturn: CrRPC.BeginReturnProc] ~ { session: Session; transID: AlpineEnvironmentP2201V1.TransID; volumeGroupID: AlpineEnvironmentP2201V1.VolumeGroupID; replyVerifier: AuthenticationP14V2.SeqWords; { session.token _ CrRPC.GetCard32[s]; session.verifier _ UProc88[h, s]; }; { FOR i125: CARDINAL IN [0..9) DO transID[i125] _ CrRPC.GetCard16[s]; ENDLOOP; }; { FOR i126: CARDINAL IN [0..5) DO volumeGroupID.vgid[i126] _ CrRPC.GetCard16[s]; ENDLOOP; }; [replyVerifier] _ UnlockOwnerDB[h, session, transID, volumeGroupID]; beginReturn[h]; { MProc89[h, s, replyVerifier]; }; }; LockPagesCaller: PROC [h: CrRPC.Handle, s: CrRPC.STREAM, beginReturn: CrRPC.BeginReturnProc] ~ { session: Session; openFileID: CARD32; pageRun: AlpineEnvironmentP2201V1.PageRun; lock: AlpineEnvironmentP2201V1.LockOption; replyVerifier: AuthenticationP14V2.SeqWords; { session.token _ CrRPC.GetCard32[s]; session.verifier _ UProc88[h, s]; }; { openFileID _ CrRPC.GetCard32[s]; }; { pageRun.firstPage _ CrRPC.GetInt32[s]; pageRun.count _ CrRPC.GetCard16[s]; }; { lock.mode _ VAL[CrRPC.GetCard16[s]]; lock.ifConflict _ VAL[CrRPC.GetCard16[s]]; }; [replyVerifier] _ LockPages[h, session, openFileID, pageRun, lock]; beginReturn[h]; { MProc89[h, s, replyVerifier]; }; }; WriteOwnerPropertiesCaller: PROC [h: CrRPC.Handle, s: CrRPC.STREAM, beginReturn: CrRPC.BeginReturnProc] ~ { session: Session; transID: AlpineEnvironmentP2201V1.TransID; volumeGroupID: AlpineEnvironmentP2201V1.VolumeGroupID; owner: ROPE; properties: AlpineEnvironmentP2201V1.OwnerProperties; enforceTotalQuota: BOOLEAN; replyVerifier: AuthenticationP14V2.SeqWords; { session.token _ CrRPC.GetCard32[s]; session.verifier _ UProc88[h, s]; }; { FOR i127: CARDINAL IN [0..9) DO transID[i127] _ CrRPC.GetCard16[s]; ENDLOOP; }; { FOR i128: CARDINAL IN [0..5) DO volumeGroupID.vgid[i128] _ CrRPC.GetCard16[s]; ENDLOOP; }; { owner _ CrRPC.GetRope[s]; }; { properties _ UProc100[h, s]; }; { enforceTotalQuota _ CrRPC.GetBool[s]; }; [replyVerifier] _ WriteOwnerProperties[h, session, transID, volumeGroupID, owner, properties, enforceTotalQuota]; beginReturn[h]; { MProc89[h, s, replyVerifier]; }; }; CreateCaller: PROC [h: CrRPC.Handle, s: CrRPC.STREAM, beginReturn: CrRPC.BeginReturnProc] ~ { session: Session; transID: AlpineEnvironmentP2201V1.TransID; volumeID: AlpineEnvironmentP2201V1.VolOrVolGroupID; owner: ROPE; initialSize: INT32; recoveryOption: AlpineEnvironmentP2201V1.RecoveryOption; referencePattern: AlpineEnvironmentP2201V1.ReferencePattern; openFileID: CARD32; universalFile: AlpineEnvironmentP2201V1.UniversalFile; replyVerifier: AuthenticationP14V2.SeqWords; { session.token _ CrRPC.GetCard32[s]; session.verifier _ UProc88[h, s]; }; { FOR i129: CARDINAL IN [0..9) DO transID[i129] _ CrRPC.GetCard16[s]; ENDLOOP; }; { FOR i130: CARDINAL IN [0..5) DO volumeID[i130] _ CrRPC.GetCard16[s]; ENDLOOP; }; { owner _ CrRPC.GetRope[s]; }; { initialSize _ CrRPC.GetInt32[s]; }; { recoveryOption _ VAL[CrRPC.GetCard16[s]]; }; { referencePattern _ VAL[CrRPC.GetCard16[s]]; }; [openFileID, universalFile, replyVerifier] _ Create[h, session, transID, volumeID, owner, initialSize, recoveryOption, referencePattern]; beginReturn[h]; { CrRPC.PutCard32[s, openFileID]; }; { FOR i131: CARDINAL IN [0..5) DO CrRPC.PutCard16[s, universalFile.volumeID.vgid[i131]]; ENDLOOP; FOR i132: CARDINAL IN [0..2) DO CrRPC.PutCard16[s, universalFile.fileID.id[i132]]; ENDLOOP; FOR i133: CARDINAL IN [0..2) DO CrRPC.PutCard16[s, universalFile.fileID.da[i133]]; ENDLOOP; }; { MProc89[h, s, replyVerifier]; }; }; SetSizeCaller: PROC [h: CrRPC.Handle, s: CrRPC.STREAM, beginReturn: CrRPC.BeginReturnProc] ~ { session: Session; openFileID: CARD32; size: INT32; lock: AlpineEnvironmentP2201V1.LockOption; replyVerifier: AuthenticationP14V2.SeqWords; { session.token _ CrRPC.GetCard32[s]; session.verifier _ UProc88[h, s]; }; { openFileID _ CrRPC.GetCard32[s]; }; { size _ CrRPC.GetInt32[s]; }; { lock.mode _ VAL[CrRPC.GetCard16[s]]; lock.ifConflict _ VAL[CrRPC.GetCard16[s]]; }; [replyVerifier] _ SetSize[h, session, openFileID, size, lock]; beginReturn[h]; { MProc89[h, s, replyVerifier]; }; }; ReadOwnerDBPropertiesCaller: PROC [h: CrRPC.Handle, s: CrRPC.STREAM, beginReturn: CrRPC.BeginReturnProc] ~ { session: Session; transID: AlpineEnvironmentP2201V1.TransID; volumeGroupID: AlpineEnvironmentP2201V1.VolumeGroupID; nOwners: INT32; nEntriesUsed: INT32; nEntries: INT32; totalQuota: INT32; totalSpaceInUse: INT32; volumeGroupSize: INT32; replyVerifier: AuthenticationP14V2.SeqWords; { session.token _ CrRPC.GetCard32[s]; session.verifier _ UProc88[h, s]; }; { FOR i134: CARDINAL IN [0..9) DO transID[i134] _ CrRPC.GetCard16[s]; ENDLOOP; }; { FOR i135: CARDINAL IN [0..5) DO volumeGroupID.vgid[i135] _ CrRPC.GetCard16[s]; ENDLOOP; }; [nOwners, nEntriesUsed, nEntries, totalQuota, totalSpaceInUse, volumeGroupSize, replyVerifier] _ ReadOwnerDBProperties[h, session, transID, volumeGroupID]; beginReturn[h]; { CrRPC.PutInt32[s, nOwners]; }; { CrRPC.PutInt32[s, nEntriesUsed]; }; { CrRPC.PutInt32[s, nEntries]; }; { CrRPC.PutInt32[s, totalQuota]; }; { CrRPC.PutInt32[s, totalSpaceInUse]; }; { CrRPC.PutInt32[s, volumeGroupSize]; }; { MProc89[h, s, replyVerifier]; }; }; CloseCaller: PROC [h: CrRPC.Handle, s: CrRPC.STREAM, beginReturn: CrRPC.BeginReturnProc] ~ { session: Session; openFileID: CARD32; replyVerifier: AuthenticationP14V2.SeqWords; { session.token _ CrRPC.GetCard32[s]; session.verifier _ UProc88[h, s]; }; { openFileID _ CrRPC.GetCard32[s]; }; [replyVerifier] _ Close[h, session, openFileID]; beginReturn[h]; { MProc89[h, s, replyVerifier]; }; }; OpenCaller: PROC [h: CrRPC.Handle, s: CrRPC.STREAM, beginReturn: CrRPC.BeginReturnProc] ~ { session: Session; transID: AlpineEnvironmentP2201V1.TransID; universalFile: AlpineEnvironmentP2201V1.UniversalFile; access: AlpineEnvironmentP2201V1.AccessRights; lock: AlpineEnvironmentP2201V1.LockOption; recoveryOption: AlpineEnvironmentP2201V1.RecoveryOption; referencePattern: AlpineEnvironmentP2201V1.ReferencePattern; openFileID: CARD32; fileID: AlpineEnvironmentP2201V1.FileID; replyVerifier: AuthenticationP14V2.SeqWords; { session.token _ CrRPC.GetCard32[s]; session.verifier _ UProc88[h, s]; }; { FOR i136: CARDINAL IN [0..9) DO transID[i136] _ CrRPC.GetCard16[s]; ENDLOOP; }; { FOR i137: CARDINAL IN [0..5) DO universalFile.volumeID.vgid[i137] _ CrRPC.GetCard16[s]; ENDLOOP; FOR i138: CARDINAL IN [0..2) DO universalFile.fileID.id[i138] _ CrRPC.GetCard16[s]; ENDLOOP; FOR i139: CARDINAL IN [0..2) DO universalFile.fileID.da[i139] _ CrRPC.GetCard16[s]; ENDLOOP; }; { access _ VAL[CrRPC.GetCard16[s]]; }; { lock.mode _ VAL[CrRPC.GetCard16[s]]; lock.ifConflict _ VAL[CrRPC.GetCard16[s]]; }; { recoveryOption _ VAL[CrRPC.GetCard16[s]]; }; { referencePattern _ VAL[CrRPC.GetCard16[s]]; }; [openFileID, fileID, replyVerifier] _ Open[h, session, transID, universalFile, access, lock, recoveryOption, referencePattern]; beginReturn[h]; { CrRPC.PutCard32[s, openFileID]; }; { FOR i140: CARDINAL IN [0..2) DO CrRPC.PutCard16[s, fileID.id[i140]]; ENDLOOP; FOR i141: CARDINAL IN [0..2) DO CrRPC.PutCard16[s, fileID.da[i141]]; ENDLOOP; }; { MProc89[h, s, replyVerifier]; }; }; IncrementVersionCaller: PROC [h: CrRPC.Handle, s: CrRPC.STREAM, beginReturn: CrRPC.BeginReturnProc] ~ { session: Session; openFileID: CARD32; increment: INT32; replyVerifier: AuthenticationP14V2.SeqWords; { session.token _ CrRPC.GetCard32[s]; session.verifier _ UProc88[h, s]; }; { openFileID _ CrRPC.GetCard32[s]; }; { increment _ CrRPC.GetInt32[s]; }; [replyVerifier] _ IncrementVersion[h, session, openFileID, increment]; beginReturn[h]; { MProc89[h, s, replyVerifier]; }; }; GetAccessRightsCaller: PROC [h: CrRPC.Handle, s: CrRPC.STREAM, beginReturn: CrRPC.BeginReturnProc] ~ { session: Session; openFileID: CARD32; access: AlpineEnvironmentP2201V1.AccessRights; replyVerifier: AuthenticationP14V2.SeqWords; { session.token _ CrRPC.GetCard32[s]; session.verifier _ UProc88[h, s]; }; { openFileID _ CrRPC.GetCard32[s]; }; [access, replyVerifier] _ GetAccessRights[h, session, openFileID]; beginReturn[h]; { CrRPC.PutCard16[s, ORD[access]]; }; { MProc89[h, s, replyVerifier]; }; }; Server: CrRPC.ServerProc ~ { ENABLE { AlpineP2202V2.StaticallyInvalid => { -- (4 ) beginError[h, 4 ]; GOTO Finished; }; AlpineP2202V2.AccessFailed => { -- (0 ) beginError[h, 0 ]; CrRPC.PutCard16[s, ORD[missingAccess]]; GOTO Finished; }; AlpineP2202V2.OperationFailed => { -- (2 ) beginError[h, 2 ]; CrRPC.PutCard16[s, ORD[why]]; GOTO Finished; }; AlpineP2202V2.Unknown => { -- (5 ) beginError[h, 5 ]; CrRPC.PutCard16[s, ORD[what]]; GOTO Finished; }; AlpineP2202V2.LockFailed => { -- (1 ) beginError[h, 1 ]; CrRPC.PutCard16[s, ORD[why]]; GOTO Finished; }; AlpineP2202V2.ConnectionError => { -- (7 ) beginError[h, 7 ]; CrRPC.PutCard16[s, ORD[problem]]; GOTO Finished; }; AlpineP2202V2.AuthenticationError => { -- (6 ) beginError[h, 6 ]; CrRPC.PutCard16[s, ORD[problem]]; GOTO Finished; }; AlpineP2202V2.PossiblyDamaged => { -- (3 ) beginError[h, 3 ]; GOTO Finished; }; }; IF (pgmVersion # 2) THEN { beginReject[h, CrRPC.noSuchVersion]; CrRPC.PutCard16[s, 2]; --low CrRPC.PutCard16[s, 2]; --high RETURN }; SELECT proc FROM 16 => GetReferencePatternCaller[h, s, beginReturn]; 23 => WritePropertiesCaller[h, s, beginReturn]; 1 => LogoffCaller[h, s, beginReturn]; 22 => ReadPropertiesCaller[h, s, beginReturn]; 10 => GetUniversalFileCaller[h, s, beginReturn]; 17 => SetReferencePatternCaller[h, s, beginReturn]; 5 => FinishTransactionCaller[h, s, beginReturn]; 18 => ReadPagesCaller[h, s, beginReturn]; 31 => CreateOwnerCaller[h, s, beginReturn]; 19 => WritePagesCaller[h, s, beginReturn]; 37 => GetGroupCaller[h, s, beginReturn]; 31 => DestroyOwnerCaller[h, s, beginReturn]; 26 => GetSizeCaller[h, s, beginReturn]; 34 => ReorganizeOwnerDBCaller[h, s, beginReturn]; 15 => GetRecoveryOptionCaller[h, s, beginReturn]; 29 => ReadOwnerPropertiesCaller[h, s, beginReturn]; 32 => NextOwnerCaller[h, s, beginReturn]; 38 => GetEnclosingGroupCaller[h, s, beginReturn]; 11 => GetTransIDCaller[h, s, beginReturn]; 21 => UnlockPagesCaller[h, s, beginReturn]; 28 => UnlockFileCaller[h, s, beginReturn]; 14 => SetLockOptionCaller[h, s, beginReturn]; 4 => AssertAlpineWheelCaller[h, s, beginReturn]; 2 => CreateTransactionCaller[h, s, beginReturn]; 0 => LogonCaller[h, s, beginReturn]; 36 => GetNextGroupCaller[h, s, beginReturn]; 9 => DeleteCaller[h, s, beginReturn]; 13 => GetLockOptionCaller[h, s, beginReturn]; 24 => UnlockVersionCaller[h, s, beginReturn]; 3 => CreateWorkerCaller[h, s, beginReturn]; 35 => UnlockOwnerDBCaller[h, s, beginReturn]; 20 => LockPagesCaller[h, s, beginReturn]; 30 => WriteOwnerPropertiesCaller[h, s, beginReturn]; 7 => CreateCaller[h, s, beginReturn]; 27 => SetSizeCaller[h, s, beginReturn]; 33 => ReadOwnerDBPropertiesCaller[h, s, beginReturn]; 8 => CloseCaller[h, s, beginReturn]; 6 => OpenCaller[h, s, beginReturn]; 25 => IncrementVersionCaller[h, s, beginReturn]; 12 => GetAccessRightsCaller[h, s, beginReturn]; ENDCASE => { beginReject[h, CrRPC.noSuchProcedure]; }; EXITS Finished => { NULL }; }; MProc92: PROC [h: CrRPC.Handle, s: CrRPC.STREAM, val: AlpineEnvironmentP2201V1.Properties] ~ { CrRPC.PutCard16[s, val.length]; FOR i142: CARDINAL IN [0..val.length) DO MProc143[h, s, val.body[i142]]; ENDLOOP; }; UProc100: PROC [h: CrRPC.Handle, s: CrRPC.STREAM] RETURNS [res: AlpineEnvironmentP2201V1.OwnerProperties] ~ { { length145: CARDINAL ~ CrRPC.GetCard16[s]; res _ NEW[AlpineEnvironmentP2201V1.OwnerPropertiesObject[length145]]; FOR i144: CARDINAL IN [0..length145) DO res.body[i144] _ UProc146[h, s]; ENDLOOP; }; }; UProc146: PROC [h: CrRPC.Handle, s: CrRPC.STREAM] RETURNS [res: AlpineEnvironmentP2201V1.OwnerPropertyValuePair] ~ { { tag147: AlpineEnvironmentP2201V1.OwnerProperty ~ VAL[CrRPC.GetCard16[s]]; SELECT tag147 FROM createAccessList => { temp148: AlpineEnvironmentP2201V1.AccessList; temp148 _ UProc149[h, s]; res _ NEW[AlpineEnvironmentP2201V1.OwnerPropertyValuePairObject.createAccessList _ [createAccessList[temp148]]] }; modifyAccessList => { temp148: AlpineEnvironmentP2201V1.AccessList; temp148 _ UProc149[h, s]; res _ NEW[AlpineEnvironmentP2201V1.OwnerPropertyValuePairObject.modifyAccessList _ [modifyAccessList[temp148]]] }; quota => { temp148: INT32; temp148 _ CrRPC.GetInt32[s]; res _ NEW[AlpineEnvironmentP2201V1.OwnerPropertyValuePairObject.quota _ [quota[temp148]]] }; spaceInUse => { temp148: INT32; temp148 _ CrRPC.GetInt32[s]; res _ NEW[AlpineEnvironmentP2201V1.OwnerPropertyValuePairObject.spaceInUse _ [spaceInUse[temp148]]] }; rootFile => { temp148: AlpineEnvironmentP2201V1.UniversalFile; FOR i150: CARDINAL IN [0..5) DO temp148.volumeID.vgid[i150] _ CrRPC.GetCard16[s]; ENDLOOP; FOR i151: CARDINAL IN [0..2) DO temp148.fileID.id[i151] _ CrRPC.GetCard16[s]; ENDLOOP; FOR i152: CARDINAL IN [0..2) DO temp148.fileID.da[i152] _ CrRPC.GetCard16[s]; ENDLOOP; res _ NEW[AlpineEnvironmentP2201V1.OwnerPropertyValuePairObject.rootFile _ [rootFile[temp148]]] }; ENDCASE => ERROR; }; }; UProc90: PROC [h: CrRPC.Handle, s: CrRPC.STREAM] RETURNS [res: AlpineEnvironmentP2201V1.Properties] ~ { { length154: CARDINAL ~ CrRPC.GetCard16[s]; res _ NEW[AlpineEnvironmentP2201V1.PropertiesObject[length154]]; FOR i153: CARDINAL IN [0..length154) DO res.body[i153] _ UProc155[h, s]; ENDLOOP; }; }; MProc111: PROC [h: CrRPC.Handle, s: CrRPC.STREAM, val: AlpineEnvironmentP2201V1.OwnerProperties] ~ { CrRPC.PutCard16[s, val.length]; FOR i156: CARDINAL IN [0..val.length) DO MProc157[h, s, val.body[i156]]; ENDLOOP; }; UProc88: PROC [h: CrRPC.Handle, s: CrRPC.STREAM] RETURNS [res: AuthenticationP14V2.SeqWords] ~ { { length159: CARDINAL ~ CrRPC.GetCard16[s]; res _ NEW[AuthenticationP14V2.SeqWordsObject[length159]]; FOR i158: CARDINAL IN [0..length159) DO res.body[i158] _ CrRPC.GetCard16[s]; ENDLOOP; }; }; MProc143: PROC [h: CrRPC.Handle, s: CrRPC.STREAM, val: AlpineEnvironmentP2201V1.PropertyValuePair] ~ { CrRPC.PutCard16[s, ORD[val.type]]; WITH val SELECT FROM it: REF AlpineEnvironmentP2201V1.PropertyValuePairObject.byteLength => { CrRPC.PutInt32[s, it^.byteLength]; }; it: REF AlpineEnvironmentP2201V1.PropertyValuePairObject.createTime => { CrRPC.PutCard32[s, it^.createTime]; }; it: REF AlpineEnvironmentP2201V1.PropertyValuePairObject.highWaterMark => { CrRPC.PutInt32[s, it^.highWaterMark]; }; it: REF AlpineEnvironmentP2201V1.PropertyValuePairObject.modifyAccess => { MProc161[h, s, it^.modifyAccess]; }; it: REF AlpineEnvironmentP2201V1.PropertyValuePairObject.owner => { CrRPC.PutRope[s, it^.owner]; }; it: REF AlpineEnvironmentP2201V1.PropertyValuePairObject.readAccess => { MProc161[h, s, it^.readAccess]; }; it: REF AlpineEnvironmentP2201V1.PropertyValuePairObject.stringName => { CrRPC.PutRope[s, it^.stringName]; }; it: REF AlpineEnvironmentP2201V1.PropertyValuePairObject.version => { CrRPC.PutInt32[s, it^.version]; }; ENDCASE; }; MProc103: PROC [h: CrRPC.Handle, s: CrRPC.STREAM, val: AlpineEnvironmentP2201V1.VolumeIDs] ~ { CrRPC.PutCard16[s, val.length]; FOR i162: CARDINAL IN [0..val.length) DO FOR i163: CARDINAL IN [0..5) DO CrRPC.PutCard16[s, val.body[i162].vgid[i163]]; ENDLOOP; ENDLOOP; }; MProc89: PROC [h: CrRPC.Handle, s: CrRPC.STREAM, val: AuthenticationP14V2.SeqWords] ~ { CrRPC.PutCard16[s, val.length]; FOR i164: CARDINAL IN [0..val.length) DO CrRPC.PutCard16[s, val.body[i164]]; ENDLOOP; }; UProc149: PROC [h: CrRPC.Handle, s: CrRPC.STREAM] RETURNS [res: AlpineEnvironmentP2201V1.AccessList] ~ { { length166: CARDINAL ~ CrRPC.GetCard16[s]; res _ NEW[AlpineEnvironmentP2201V1.AccessListObject[length166]]; FOR i165: CARDINAL IN [0..length166) DO res.body[i165] _ CrRPC.GetRope[s]; ENDLOOP; }; }; MProc157: PROC [h: CrRPC.Handle, s: CrRPC.STREAM, val: AlpineEnvironmentP2201V1.OwnerPropertyValuePair] ~ { CrRPC.PutCard16[s, ORD[val.type]]; WITH val SELECT FROM it: REF AlpineEnvironmentP2201V1.OwnerPropertyValuePairObject.createAccessList => { MProc161[h, s, it^.createAccessList]; }; it: REF AlpineEnvironmentP2201V1.OwnerPropertyValuePairObject.modifyAccessList => { MProc161[h, s, it^.modifyAccessList]; }; it: REF AlpineEnvironmentP2201V1.OwnerPropertyValuePairObject.quota => { CrRPC.PutInt32[s, it^.quota]; }; it: REF AlpineEnvironmentP2201V1.OwnerPropertyValuePairObject.spaceInUse => { CrRPC.PutInt32[s, it^.spaceInUse]; }; it: REF AlpineEnvironmentP2201V1.OwnerPropertyValuePairObject.rootFile => { FOR i168: CARDINAL IN [0..5) DO CrRPC.PutCard16[s, it^.rootFile.volumeID.vgid[i168]]; ENDLOOP; FOR i169: CARDINAL IN [0..2) DO CrRPC.PutCard16[s, it^.rootFile.fileID.id[i169]]; ENDLOOP; FOR i170: CARDINAL IN [0..2) DO CrRPC.PutCard16[s, it^.rootFile.fileID.da[i170]]; ENDLOOP; }; ENDCASE; }; UProc155: PROC [h: CrRPC.Handle, s: CrRPC.STREAM] RETURNS [res: AlpineEnvironmentP2201V1.PropertyValuePair] ~ { { tag171: AlpineEnvironmentP2201V1.Property ~ VAL[CrRPC.GetCard16[s]]; SELECT tag171 FROM byteLength => { temp172: INT32; temp172 _ CrRPC.GetInt32[s]; res _ NEW[AlpineEnvironmentP2201V1.PropertyValuePairObject.byteLength _ [byteLength[temp172]]] }; createTime => { temp172: CARD32; temp172 _ CrRPC.GetCard32[s]; res _ NEW[AlpineEnvironmentP2201V1.PropertyValuePairObject.createTime _ [createTime[temp172]]] }; highWaterMark => { temp172: INT32; temp172 _ CrRPC.GetInt32[s]; res _ NEW[AlpineEnvironmentP2201V1.PropertyValuePairObject.highWaterMark _ [highWaterMark[temp172]]] }; modifyAccess => { temp172: AlpineEnvironmentP2201V1.AccessList; temp172 _ UProc149[h, s]; res _ NEW[AlpineEnvironmentP2201V1.PropertyValuePairObject.modifyAccess _ [modifyAccess[temp172]]] }; owner => { temp172: ROPE; temp172 _ CrRPC.GetRope[s]; res _ NEW[AlpineEnvironmentP2201V1.PropertyValuePairObject.owner _ [owner[temp172]]] }; readAccess => { temp172: AlpineEnvironmentP2201V1.AccessList; temp172 _ UProc149[h, s]; res _ NEW[AlpineEnvironmentP2201V1.PropertyValuePairObject.readAccess _ [readAccess[temp172]]] }; stringName => { temp172: ROPE; temp172 _ CrRPC.GetRope[s]; res _ NEW[AlpineEnvironmentP2201V1.PropertyValuePairObject.stringName _ [stringName[temp172]]] }; version => { temp172: INT32; temp172 _ CrRPC.GetInt32[s]; res _ NEW[AlpineEnvironmentP2201V1.PropertyValuePairObject.version _ [version[temp172]]] }; ENDCASE => ERROR; }; }; MProc161: PROC [h: CrRPC.Handle, s: CrRPC.STREAM, val: AlpineEnvironmentP2201V1.AccessList] ~ { CrRPC.PutCard16[s, val.length]; FOR i173: CARDINAL IN [0..val.length) DO CrRPC.PutRope[s, val.body[i173]]; ENDLOOP; }; CrRPC.RegisterServerProc[pgm~2202, serverProc~Server, pgmVersion~2]; CrRPC.EnsureListener[class~$SPP]; }... AlpineP2202V2ServerImpl.Mesa Copyright (C) 1986 by Xerox Corporation. All rights reserved. Generated by CHauser.pa at November 13, 1987 1:17:40 pm PST using Sirocco [2.0] of January 31, 1987 1:52:42 am PST [h: Handle, s: STREAM, pgm: CARD32, pgmVersion: CARD16, proc: CARD16, beginReturn: BeginReturnProc, beginError: BeginErrorProc, beginReject: BeginRejectProc] Unmarshal / Marshal Procs -- Ê#N˜šœ™Jšœ>™>Jšœ;™;Jšœ6™6J˜—šÏk ˜ J˜J˜ J˜J˜J˜ J˜—J˜šÏnœœ˜&Jšœ˜ Jšœ˜—J˜šžœœœ)˜jJ˜Jšœ œ˜J˜J˜J˜J˜˜J˜J˜—˜J˜J˜—J˜J˜—šžœœœ)˜hJ˜J˜*J˜6Jšœ œ˜J˜,J˜˜J˜#J˜!J˜—˜šœœœ˜J˜#Jšœ˜—J˜—˜šœœœ˜J˜.Jšœ˜—J˜—˜J˜J˜—J˜J˜RJ˜J˜J˜˜J˜J˜—J˜J˜—šžœœœ)˜hJ˜Jšœ œ˜J˜8J˜,J˜˜J˜#J˜!J˜—˜J˜ J˜—J˜J˜LJ˜J˜J˜˜Jšœœ˜(J˜—˜J˜J˜—J˜J˜—šžœœœ)˜jJ˜J˜*J˜6Jšœœ˜ J˜=J˜5J˜,J˜˜J˜#J˜!J˜—˜šœœœ˜J˜#Jšœ˜—J˜—˜šœœœ˜J˜.Jšœ˜—J˜—˜J˜J˜—˜šœœœ˜J˜+Jšœ˜—J˜—J˜J˜pJ˜J˜J˜˜J˜J˜—˜J˜J˜—J˜J˜—šžœœœ)˜`J˜J˜*J˜6Jšœœ˜J˜=Jšœœ˜ J˜5J˜,J˜˜J˜#J˜!J˜—˜šœœœ˜J˜#Jšœ˜—J˜—˜šœœœ˜J˜.Jšœ˜—J˜—˜J˜!J˜—˜šœœœ˜J˜+Jšœ˜—J˜—J˜J˜uJ˜J˜J˜˜J˜J˜—˜J˜J˜—˜J˜J˜—J˜J˜—šžœœœ)˜hJ˜J˜*J˜,J˜*J˜6J˜,J˜˜J˜#J˜!J˜—˜šœœœ˜J˜#Jšœ˜—J˜—˜šœœœ˜J˜)Jšœ˜—J˜—˜Jšœ œ˜$Jšœœ˜*J˜—J˜J˜XJ˜J˜J˜˜šœœœ˜J˜-Jšœ˜—J˜—˜J˜J˜—J˜J˜—šžœœœ)˜aJ˜Jšœ œ˜J˜*J˜,J˜˜J˜#J˜!J˜—˜J˜ J˜—J˜J˜>J˜J˜J˜˜šœœœ˜J˜"Jšœ˜—J˜—˜J˜J˜—J˜J˜—šžœœœ)˜bJ˜Jšœ œ˜J˜*J˜,J˜˜J˜#J˜!J˜—˜J˜ J˜—˜J˜&J˜#J˜—J˜J˜?J˜J˜J˜˜J˜J˜—J˜J˜—šžœœœ)˜aJ˜Jšœ œ˜J˜,J˜˜J˜#J˜!J˜—˜J˜ J˜—J˜J˜5J˜J˜J˜˜J˜J˜—J˜J˜—šžœœœ)˜dJ˜Jšœ œ˜J˜*J˜,J˜˜J˜#J˜!J˜—˜J˜ J˜—˜Jšœ œ˜$Jšœœ˜*J˜—J˜J˜>J˜J˜J˜˜J˜J˜—J˜J˜—šžœœœ)˜hJ˜J˜*Jšœœ˜J˜,J˜˜J˜#J˜!J˜—˜šœœœ˜J˜#Jšœ˜—J˜—˜J˜J˜—J˜J˜AJ˜J˜J˜˜J˜J˜—J˜J˜—šžœœœ)˜hJ˜Jšœœ˜J˜*J˜,J˜˜J˜#J˜!J˜—˜J˜%J˜—J˜J˜LJ˜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˜SJ˜J˜J˜˜J˜"J˜ J˜—˜J˜J˜—J˜J˜—šžœœœ)˜cJ˜J˜*J˜6J˜*J˜6J˜,J˜˜J˜#J˜!J˜—˜šœœœ˜J˜#Jšœ˜—J˜—˜šœœœ˜J˜.Jšœ˜—J˜—˜Jšœ œ˜$Jšœœ˜*J˜—J˜J˜XJ˜J˜J˜˜šœœœ˜J˜-Jšœ˜—J˜—˜J˜J˜—J˜J˜—šž œœœ)˜]J˜Jšœ œ˜J˜,J˜˜J˜#J˜!J˜—˜J˜ J˜—J˜J˜1J˜J˜J˜˜J˜J˜—J˜J˜—šžœœœ)˜dJ˜Jšœ œ˜J˜*J˜,J˜˜J˜#J˜!J˜—˜J˜ J˜—J˜J˜>J˜J˜J˜˜Jšœœ ˜#Jšœœ˜)J˜—˜J˜J˜—J˜J˜—šžœœœ)˜dJ˜Jšœ œ˜J˜,J˜˜J˜#J˜!J˜—˜J˜ J˜—J˜J˜8J˜J˜J˜˜J˜J˜—J˜J˜—šžœœœ)˜cJ˜J˜*Jšœ œ˜J˜,J˜˜J˜#J˜!J˜—˜šœœœ˜J˜#Jšœ˜—J˜—˜J˜J˜—J˜J˜AJ˜J˜J˜˜J˜J˜—J˜J˜—šžœœœ)˜dJ˜J˜*J˜6J˜,J˜˜J˜#J˜!J˜—˜šœœœ˜J˜#Jšœ˜—J˜—˜šœœœ˜J˜.Jšœ˜—J˜—J˜J˜DJ˜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˜CJ˜J˜J˜˜J˜J˜—J˜J˜—šžœœœ)˜kJ˜J˜*J˜6Jšœœ˜ J˜5Jšœœ˜J˜,J˜˜J˜#J˜!J˜—˜šœœœ˜J˜#Jšœ˜—J˜—˜šœœœ˜J˜.Jšœ˜—J˜—˜J˜J˜—˜J˜J˜—˜J˜%J˜—J˜J˜qJ˜J˜J˜˜J˜J˜—J˜J˜—šž œœœ)˜]J˜J˜*J˜3Jšœœ˜ Jšœ œ˜J˜8J˜J˜J˜J˜˜J˜J˜—J˜J˜—šžœœœ)˜lJ˜J˜*J˜6Jšœ œ˜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˜0J˜J˜J˜˜J˜J˜—J˜J˜—šž œœœ)˜[J˜J˜*J˜6J˜.J˜*J˜8J˜˜EJ˜J˜—Jšœ˜—J˜—J˜šžœœœ.˜^J˜šœœœ˜(šœœœ˜J˜.Jšœ˜—Jšœ˜—J˜—J˜šžœœœ(˜WJ˜šœœœ˜(J˜#Jšœ˜—J˜—J˜šžœœœœ/˜h˜Jšœ œ˜)Jšœœ7˜Ašœœœ˜'J˜"Jšœ˜—J˜—J˜—J˜šžœœœ;˜kJšœœ ˜"šœœ˜šœœL˜SJ˜%J˜—šœœL˜SJ˜%J˜—šœœA˜HJ˜J˜—šœœF˜MJ˜"J˜—šœœD˜Kšœœœ˜J˜5Jšœ˜—šœœœ˜J˜1Jšœ˜—šœœœ˜J˜1Jšœ˜—J˜—Jšœ˜—J˜—J˜šžœœœœ6˜o˜Jšœ,œ˜Dšœ˜˜Jšœ œ˜J˜JšœœX˜a—˜Jšœ œ˜J˜JšœœX˜a—˜Jšœ œ˜J˜Jšœœ^˜g—˜J˜-J˜Jšœœ\˜e—˜ Jšœ œ˜J˜JšœœN˜W—˜J˜-J˜JšœœX˜a—˜Jšœ œ˜J˜JšœœX˜a—˜ Jšœ œ˜J˜JšœœR˜[—Jšœœ˜—J˜—J˜—J˜šžœœœ/˜_J˜šœœœ˜(J˜!Jšœ˜—J˜—J˜——˜J˜DJ˜!—J˜J˜—…—˜¼â