<<>> <> <> <> <> <> <> <> <> DIRECTORY SunRPC, ThrushSunRPC, SRPCCalls, VoiceRopeServerSunRPC, VoiceRopeServerSunRPCClient; VoiceRopeServerSunRPCClientStub: CEDAR PROGRAM IMPORTS SunRPC, SRPCCalls EXPORTS VoiceRopeServerSunRPCClient ~ { OPEN VoiceRopeServerSunRPC, SRPCCalls; Handle: TYPE ~ SunRPC.Handle; GetError: SunRPCGetErrorProc ~ { <> <> <> <> <> <> }; <> Forget: PUBLIC ForgetType ~ { PutArgs: SunRPCPutArgsProc ~ { SunRPC.PutCard32[h, shhh]; SunRPC.PutRope[h, vr.ropeID]; SunRPC.PutInt32[h, vr.start]; SunRPC.PutInt32[h, vr.length]; SunRPC.PutRope[h, class]; SunRPC.PutRope[h, refID]; }; GetResults: SunRPCGetResultsProc ~ { nb _ SunRPC.GetRope[h]; }; SunRPCCall[h~h, remoteProc~7 , putArgs~PutArgs, getResults~GetResults, getError~GetError]; }; Play: PUBLIC PlayType ~ { PutArgs: SunRPCPutArgsProc ~ { SunRPC.PutCard32[h, shhh]; SunRPC.PutRope[h, voiceRope.ropeID]; SunRPC.PutInt32[h, voiceRope.start]; SunRPC.PutInt32[h, voiceRope.length]; SunRPC.PutCard32[h, credentials.partyID]; SunRPC.PutCard32[h, credentials.smartsID]; SunRPC.PutCard32[h, credentials.convID]; SunRPC.PutCard32[h, ORD[credentials.state]]; SunRPC.PutCard32[h, credentials.stateID]; SunRPC.PutCard32[h, serviceID]; SunRPC.PutCard32[h, intID]; SunRPCPutBool[h, queueIt]; }; GetResults: SunRPCGetResultsProc ~ { nb _ SunRPC.GetRope[h]; }; SunRPCCall[h~h, remoteProc~2 , putArgs~PutArgs, getResults~GetResults, getError~GetError]; }; Record: PUBLIC RecordType ~ { PutArgs: SunRPCPutArgsProc ~ { SunRPC.PutCard32[h, shhh]; SunRPC.PutCard32[h, credentials.partyID]; SunRPC.PutCard32[h, credentials.smartsID]; SunRPC.PutCard32[h, credentials.convID]; SunRPC.PutCard32[h, ORD[credentials.state]]; SunRPC.PutCard32[h, credentials.stateID]; SunRPC.PutCard32[h, serviceID]; SunRPC.PutCard32[h, recordedParty]; SunRPC.PutCard32[h, intID]; SunRPCPutBool[h, queueIt]; }; GetResults: SunRPCGetResultsProc ~ { nb _ SunRPC.GetRope[h]; voiceRope.ropeID _ SunRPC.GetRope[h]; voiceRope.start _ SunRPC.GetInt32[h]; voiceRope.length _ SunRPC.GetInt32[h]; }; SunRPCCall[h~h, remoteProc~1 , putArgs~PutArgs, getResults~GetResults, getError~GetError]; }; Cat: PUBLIC CatType ~ { PutArgs: SunRPCPutArgsProc ~ { SunRPC.PutCard32[h, shhh]; SunRPC.PutRope[h, callerRName]; SunRPC.PutRope[h, vr1.ropeID]; SunRPC.PutInt32[h, vr1.start]; SunRPC.PutInt32[h, vr1.length]; SunRPC.PutRope[h, vr2.ropeID]; SunRPC.PutInt32[h, vr2.start]; SunRPC.PutInt32[h, vr2.length]; SunRPC.PutRope[h, vr3.ropeID]; SunRPC.PutInt32[h, vr3.start]; SunRPC.PutInt32[h, vr3.length]; SunRPC.PutRope[h, vr4.ropeID]; SunRPC.PutInt32[h, vr4.start]; SunRPC.PutInt32[h, vr4.length]; SunRPC.PutRope[h, vr5.ropeID]; SunRPC.PutInt32[h, vr5.start]; SunRPC.PutInt32[h, vr5.length]; }; GetResults: SunRPCGetResultsProc ~ { nb _ SunRPC.GetRope[h]; new.ropeID _ SunRPC.GetRope[h]; new.start _ SunRPC.GetInt32[h]; new.length _ SunRPC.GetInt32[h]; }; SunRPCCall[h~h, remoteProc~9 , putArgs~PutArgs, getResults~GetResults, getError~GetError]; }; Stop: PUBLIC StopType ~ { PutArgs: SunRPCPutArgsProc ~ { SunRPC.PutCard32[h, shhh]; SunRPC.PutCard32[h, creentials.partyID]; SunRPC.PutCard32[h, creentials.smartsID]; SunRPC.PutCard32[h, creentials.convID]; SunRPC.PutCard32[h, ORD[creentials.state]]; SunRPC.PutCard32[h, creentials.stateID]; SunRPC.PutCard32[h, serviceID]; }; GetResults: SunRPCGetResultsProc ~ { nb _ SunRPC.GetRope[h]; }; SunRPCCall[h~h, remoteProc~3 , putArgs~PutArgs, getResults~GetResults, getError~GetError]; }; Substr: PUBLIC SubstrType ~ { PutArgs: SunRPCPutArgsProc ~ { SunRPC.PutCard32[h, shhh]; SunRPC.PutRope[h, callerRName]; SunRPC.PutRope[h, vr.ropeID]; SunRPC.PutInt32[h, vr.start]; SunRPC.PutInt32[h, vr.length]; SunRPC.PutInt32[h, start]; SunRPC.PutInt32[h, len]; }; GetResults: SunRPCGetResultsProc ~ { nb _ SunRPC.GetRope[h]; new.ropeID _ SunRPC.GetRope[h]; new.start _ SunRPC.GetInt32[h]; new.length _ SunRPC.GetInt32[h]; }; SunRPCCall[h~h, remoteProc~10 , putArgs~PutArgs, getResults~GetResults, getError~GetError]; }; Replace: PUBLIC ReplaceType ~ { PutArgs: SunRPCPutArgsProc ~ { SunRPC.PutCard32[h, shhh]; SunRPC.PutRope[h, callerRName]; SunRPC.PutRope[h, vr.ropeID]; SunRPC.PutInt32[h, vr.start]; SunRPC.PutInt32[h, vr.length]; SunRPC.PutInt32[h, start]; SunRPC.PutInt32[h, len]; SunRPC.PutRope[h, with.ropeID]; SunRPC.PutInt32[h, with.start]; SunRPC.PutInt32[h, with.length]; }; GetResults: SunRPCGetResultsProc ~ { nb _ SunRPC.GetRope[h]; new.ropeID _ SunRPC.GetRope[h]; new.start _ SunRPC.GetInt32[h]; new.length _ SunRPC.GetInt32[h]; }; SunRPCCall[h~h, remoteProc~11 , putArgs~PutArgs, getResults~GetResults, getError~GetError]; }; DescribeRope: PUBLIC DescribeRopeType ~ { PutArgs: SunRPCPutArgsProc ~ { SunRPC.PutCard32[h, shhh]; SunRPC.PutRope[h, vr.ropeID]; SunRPC.PutInt32[h, vr.start]; SunRPC.PutInt32[h, vr.length]; SunRPC.PutInt32[h, minSilence]; }; GetResults: SunRPCGetResultsProc ~ { nb _ SunRPC.GetRope[h]; length _ SunRPC.GetInt32[h]; noise _ UProc1[h]; }; SunRPCCall[h~h, remoteProc~13 , putArgs~PutArgs, getResults~GetResults, getError~GetError]; }; SetPermissions: PUBLIC SetPermissionsType ~ { PutArgs: SunRPCPutArgsProc ~ { SunRPC.PutCard32[h, shhh]; SunRPC.PutRope[h, callerRName]; SunRPC.PutRope[h, vr.ropeID]; SunRPC.PutInt32[h, vr.start]; SunRPC.PutInt32[h, vr.length]; MProc2[h, playAccess]; MProc2[h, editAccess]; }; GetResults: SunRPCGetResultsProc ~ { nb _ SunRPC.GetRope[h]; }; SunRPCCall[h~h, remoteProc~17 , putArgs~PutArgs, getResults~GetResults, getError~GetError]; }; Pause: PUBLIC PauseType ~ { PutArgs: SunRPCPutArgsProc ~ { SunRPC.PutCard32[h, shhh]; SunRPC.PutCard32[h, cedentials.partyID]; SunRPC.PutCard32[h, cedentials.smartsID]; SunRPC.PutCard32[h, cedentials.convID]; SunRPC.PutCard32[h, ORD[cedentials.state]]; SunRPC.PutCard32[h, cedentials.stateID]; SunRPC.PutCard32[h, serviceID]; }; GetResults: SunRPCGetResultsProc ~ { nb _ SunRPC.GetRope[h]; }; SunRPCCall[h~h, remoteProc~4 , putArgs~PutArgs, getResults~GetResults, getError~GetError]; }; Resume: PUBLIC ResumeType ~ { PutArgs: SunRPCPutArgsProc ~ { SunRPC.PutCard32[h, shhh]; SunRPC.PutCard32[h, credentials.partyID]; SunRPC.PutCard32[h, credentials.smartsID]; SunRPC.PutCard32[h, credentials.convID]; SunRPC.PutCard32[h, ORD[credentials.state]]; SunRPC.PutCard32[h, credentials.stateID]; SunRPC.PutCard32[h, serviceID]; }; GetResults: SunRPCGetResultsProc ~ { nb _ SunRPC.GetRope[h]; }; SunRPCCall[h~h, remoteProc~5 , putArgs~PutArgs, getResults~GetResults, getError~GetError]; }; GetEnergies: PUBLIC GetEnergiesType ~ { PutArgs: SunRPCPutArgsProc ~ { SunRPC.PutCard32[h, shhh]; SunRPC.PutRope[h, vr.ropeID]; SunRPC.PutInt32[h, vr.start]; SunRPC.PutInt32[h, vr.length]; SunRPC.PutCard32[h, samplesPerSegment]; }; GetResults: SunRPCGetResultsProc ~ { nb _ SunRPC.GetRope[h]; energies _ UProc3[h]; }; SunRPCCall[h~h, remoteProc~14 , putArgs~PutArgs, getResults~GetResults, getError~GetError]; }; GetPermissions: PUBLIC GetPermissionsType ~ { PutArgs: SunRPCPutArgsProc ~ { SunRPC.PutCard32[h, shhh]; SunRPC.PutRope[h, vr.ropeID]; SunRPC.PutInt32[h, vr.start]; SunRPC.PutInt32[h, vr.length]; }; GetResults: SunRPCGetResultsProc ~ { nb _ SunRPC.GetRope[h]; playAccess _ UProc4[h]; editAccess _ UProc4[h]; }; SunRPCCall[h~h, remoteProc~18 , putArgs~PutArgs, getResults~GetResults, getError~GetError]; }; Length: PUBLIC LengthType ~ { PutArgs: SunRPCPutArgsProc ~ { SunRPC.PutCard32[h, shhh]; SunRPC.PutRope[h, vr.ropeID]; SunRPC.PutInt32[h, vr.start]; SunRPC.PutInt32[h, vr.length]; }; GetResults: SunRPCGetResultsProc ~ { nb _ SunRPC.GetRope[h]; len _ SunRPC.GetInt32[h]; }; SunRPCCall[h~h, remoteProc~12 , putArgs~PutArgs, getResults~GetResults, getError~GetError]; }; GetByInterest: PUBLIC GetByInterestType ~ { PutArgs: SunRPCPutArgsProc ~ { SunRPC.PutCard32[h, shhh]; SunRPC.PutRope[h, class]; SunRPC.PutRope[h, refID]; }; GetResults: SunRPCGetResultsProc ~ { nb _ SunRPC.GetRope[h]; voiceRope.ropeID _ SunRPC.GetRope[h]; voiceRope.start _ SunRPC.GetInt32[h]; voiceRope.length _ SunRPC.GetInt32[h]; }; SunRPCCall[h~h, remoteProc~8 , putArgs~PutArgs, getResults~GetResults, getError~GetError]; }; StoreBlock: PUBLIC StoreBlockType ~ { PutArgs: SunRPCPutArgsProc ~ { SunRPC.PutCard32[h, shhh]; MProc5[h, block]; FOR i6: CARDINAL IN [0..3) DO SunRPC.PutCard32[h, key[i6]]; ENDLOOP; }; GetResults: SunRPCGetResultsProc ~ { nb _ SunRPC.GetRope[h]; voiceRope.ropeID _ SunRPC.GetRope[h]; voiceRope.start _ SunRPC.GetInt32[h]; voiceRope.length _ SunRPC.GetInt32[h]; }; SunRPCCall[h~h, remoteProc~16 , putArgs~PutArgs, getResults~GetResults, getError~GetError]; }; Retain: PUBLIC RetainType ~ { PutArgs: SunRPCPutArgsProc ~ { SunRPC.PutCard32[h, shhh]; SunRPC.PutRope[h, callerRName]; SunRPC.PutRope[h, vr.ropeID]; SunRPC.PutInt32[h, vr.start]; SunRPC.PutInt32[h, vr.length]; SunRPC.PutRope[h, class]; SunRPC.PutRope[h, refID]; SunRPC.PutRope[h, other]; }; GetResults: SunRPCGetResultsProc ~ { nb _ SunRPC.GetRope[h]; }; SunRPCCall[h~h, remoteProc~6 , putArgs~PutArgs, getResults~GetResults, getError~GetError]; }; FetchBlock: PUBLIC FetchBlockType ~ { PutArgs: SunRPCPutArgsProc ~ { SunRPC.PutCard32[h, shhh]; SunRPC.PutRope[h, vr.ropeID]; SunRPC.PutInt32[h, vr.start]; SunRPC.PutInt32[h, vr.length]; SunRPC.PutInt32[h, start]; SunRPC.PutInt32[h, len]; SunRPCPutBool[h, decrypt]; }; GetResults: SunRPCGetResultsProc ~ { nb _ SunRPC.GetRope[h]; block _ UProc7[h]; }; SunRPCCall[h~h, remoteProc~15 , putArgs~PutArgs, getResults~GetResults, getError~GetError]; }; <> SunRPCGetBool: PROC [h: Handle] RETURNS [BOOL] ~ INLINE { RETURN [SunRPC.GetCard32[h] # 0] }; SunRPCPutBool: PROC [h: Handle, bool: BOOL] ~ INLINE { SunRPC.PutCard32[h, IF bool THEN 1 ELSE 0] }; MProc2: PROC [h: Handle, val: Users] ~ { SunRPC.PutCard32[h, val.length]; FOR i8: CARDINAL IN [0..val.length) DO SunRPC.PutRope[h, val.body[i8]]; ENDLOOP; }; UProc3: PROC [h: Handle] RETURNS [res: EnergySequence] ~ { { length10: CARDINAL ~ SunRPC.GetCard32[h]; res _ NEW[EnergySequenceObject[length10]]; FOR i9: CARDINAL IN [0..length10) DO res.body[i9] _ SunRPC.GetCard32[h]; ENDLOOP; }; }; MProc5: PROC [h: Handle, val: VoiceBlock] ~ { SunRPC.PutCard32[h, val.length]; FOR i11: CARDINAL IN [0..val.length) DO SunRPC.PutCard32[h, val.body[i11]]; ENDLOOP; }; UProc4: PROC [h: Handle] RETURNS [res: Users] ~ { { length13: CARDINAL ~ SunRPC.GetCard32[h]; res _ NEW[UsersObject[length13]]; FOR i12: CARDINAL IN [0..length13) DO res.body[i12] _ SunRPC.GetRope[h]; ENDLOOP; }; }; UProc7: PROC [h: Handle] RETURNS [res: VoiceBlock] ~ { { length15: CARDINAL ~ SunRPC.GetCard32[h]; res _ NEW[VoiceBlockObject[length15]]; FOR i14: CARDINAL IN [0..length15) DO res.body[i14] _ SunRPC.GetCard32[h]; ENDLOOP; }; }; UProc1: PROC [h: Handle] RETURNS [res: IntervalSpecs] ~ { { length17: CARDINAL ~ SunRPC.GetCard32[h]; res _ NEW[IntervalSpecsObject[length17]]; FOR i16: CARDINAL IN [0..length17) DO res.body[i16].start _ SunRPC.GetInt32[h]; res.body[i16].length _ SunRPC.GetInt32[h]; ENDLOOP; }; }; SunRPCCall: PROC [h: Handle, remoteProc: CARD, putArgs: SunRPCPutArgsProc, getResults: SunRPCGetResultsProc, getError: SunRPCGetErrorProc] ~ { SunRPCProgramCall[h: h, remoteProc: remoteProc, putArgs: putArgs, getResults: getResults, getError: getError]; }; }... <> <> <> <<>>