DIRECTORY Rope, SunRPC, MS, NS, MSGetPut, NSGetPut, NMS, NMSGetPut; NMSGetPutImpl: CEDAR PROGRAM IMPORTS SunRPC, MSGetPut, NSGetPut EXPORTS NMS, NMSGetPut = BEGIN Handle: TYPE = SunRPC.Handle; ROPE: TYPE = Rope.ROPE; ReturnCodesNames: PUBLIC ARRAY NMS.ReturnCodes OF ROPE _ [ "Success", "NotMaintained" ]; GetReturnCodes: PUBLIC PROC[h: Handle] RETURNS [res: NMS.ReturnCodes] = { res _ VAL[SunRPC.GetInt32[h]]; }; PutReturnCodes: PUBLIC PROC[h: Handle, in: NMS.ReturnCodes] = { SunRPC.PutInt32[h, ORD[in]]; }; ClaimStateNames: PUBLIC ARRAY NMS.ClaimState OF ROPE _ [ "notClaimed", "checking", "claimed" ]; GetClaimState: PUBLIC PROC[h: Handle] RETURNS [res: NMS.ClaimState] = { res _ VAL[SunRPC.GetInt32[h]]; }; PutClaimState: PUBLIC PROC[h: Handle, in: NMS.ClaimState] = { SunRPC.PutInt32[h, ORD[in]]; }; GetQueryCentralNMSargs: PUBLIC PROC[h: Handle] RETURNS [res: NMS.QueryCentralNMSargs] = { res.host _ SunRPC.GetRope[h]; res.state _ GetClaimState[h]; }; PutQueryCentralNMSargs: PUBLIC PROC[h: Handle, in: NMS.QueryCentralNMSargs] = { SunRPC.PutRope[h, in.host]; PutClaimState[h, in.state]; }; GetQueryCentralNMSreturn: PUBLIC PROC[h: Handle] RETURNS [res: NMS.QueryCentralNMSreturn] = { res.state _ GetClaimState[h]; res.count _ SunRPC.GetInt32[h]; }; PutQueryCentralNMSreturn: PUBLIC PROC[h: Handle, in: NMS.QueryCentralNMSreturn] = { PutClaimState[h, in.state]; SunRPC.PutInt32[h, in.count]; }; UpdateTypeNames: PUBLIC ARRAY NMS.UpdateType OF ROPE _ [ "add", "replace" ]; GetUpdateType: PUBLIC PROC[h: Handle] RETURNS [res: NMS.UpdateType] = { res _ VAL[SunRPC.GetInt32[h]]; }; PutUpdateType: PUBLIC PROC[h: Handle, in: NMS.UpdateType] = { SunRPC.PutInt32[h, ORD[in]]; }; GetUpdateObjectRecord: PUBLIC PROC[h: Handle] RETURNS [res: NMS.UpdateObjectRecord] = { res.obj _ NSGetPut.GetObject[h]; res.uid _ NSGetPut.GetString[h]; }; PutUpdateObjectRecord: PUBLIC PROC[h: Handle, in: NMS.UpdateObjectRecord] = { NSGetPut.PutObject[h, in.obj]; NSGetPut.PutString[h, in.uid]; }; GetUpdateObject: PUBLIC PROC[h: Handle] RETURNS [res: NMS.UpdateObject] = { IF SunRPC.GetInt32[h] # 0 THEN { res _ NEW[NMS.UpdateObjectRecord]; res^ _ GetUpdateObjectRecord[h]; } ELSE res _ NIL; }; PutUpdateObject: PUBLIC PROC[h: Handle, in: NMS.UpdateObject] = { IF in = NIL THEN { SunRPC.PutInt32[h, 0]; } ELSE { SunRPC.PutInt32[h, 1]; PutUpdateObjectRecord[h, in^]; }; }; GetUpdateCentralNMSargs: PUBLIC PROC[h: Handle] RETURNS [res: NMS.UpdateCentralNMSargs] = { res.host _ NSGetPut.GetString[h]; res.how _ GetUpdateType[h]; { len: INT _ SunRPC.GetInt32[h]; res.objs _ NEW[NMS.SeqType0Object[len]]; FOR i: INT IN [0..len) DO res.objs[i] _ GetUpdateObject[h]; ENDLOOP; }; }; PutUpdateCentralNMSargs: PUBLIC PROC[h: Handle, in: NMS.UpdateCentralNMSargs] = { NSGetPut.PutString[h, in.host]; PutUpdateType[h, in.how]; SunRPC.PutInt32[h, in.objs.size]; FOR i: INT IN [0..in.objs.size) DO PutUpdateObject[h, in.objs[i]]; ENDLOOP; }; GetQueryLocalNMSargs: PUBLIC PROC[h: Handle] RETURNS [res: NMS.QueryLocalNMSargs] = { res.centralHost _ SunRPC.GetRope[h]; }; PutQueryLocalNMSargs: PUBLIC PROC[h: Handle, in: NMS.QueryLocalNMSargs] = { SunRPC.PutRope[h, in.centralHost]; }; GetQueryLocalNMSreturn: PUBLIC PROC[h: Handle] RETURNS [res: NMS.QueryLocalNMSreturn] = { { len: INT _ SunRPC.GetInt32[h]; res.objs _ NEW[NMS.SeqType1Object[len]]; FOR i: INT IN [0..len) DO res.objs[i] _ GetUpdateObject[h]; ENDLOOP; }; }; PutQueryLocalNMSreturn: PUBLIC PROC[h: Handle, in: NMS.QueryLocalNMSreturn] = { SunRPC.PutInt32[h, in.objs.size]; FOR i: INT IN [0..in.objs.size) DO PutUpdateObject[h, in.objs[i]]; ENDLOOP; }; GetQueryMaintainargs: PUBLIC PROC[h: Handle] RETURNS [res: NMS.QueryMaintainargs] = { res.idStr _ SunRPC.GetRope[h]; }; PutQueryMaintainargs: PUBLIC PROC[h: Handle, in: NMS.QueryMaintainargs] = { SunRPC.PutRope[h, in.idStr]; }; GetQueryMaintainreturn: PUBLIC PROC[h: Handle] RETURNS [res: NMS.QueryMaintainreturn] = { tag: NMS.ReturnCodes; tag _ GetReturnCodes[h]; SELECT tag FROM Success => { v: REF Success NMS.QueryMaintainreturnObject _ NEW[Success NMS.QueryMaintainreturnObject]; v.pid _ SunRPC.GetInt32[h]; res _ v; }; NotMaintained => { v: REF NotMaintained NMS.QueryMaintainreturnObject _ NEW[NotMaintained NMS.QueryMaintainreturnObject]; res _ v; }; ENDCASE => NULL; }; PutQueryMaintainreturn: PUBLIC PROC[h: Handle, in: NMS.QueryMaintainreturn] = { PutReturnCodes[h, in.returnCode]; SELECT in.returnCode FROM Success => { v: REF Success NMS.QueryMaintainreturnObject _ NARROW[in]; SunRPC.PutInt32[h, v.pid]; }; NotMaintained => { v: REF NotMaintained NMS.QueryMaintainreturnObject _ NARROW[in]; }; ENDCASE => NULL; }; END. \ NMSGetPutImpl.mesa Please do not edit this file. It was generated using CedarRPCGen. Êx•NewlineDelimiter ™J™J™J™#J˜šÏk ˜ J˜J˜Jšœ˜Jšœ˜J˜ J˜ Jšœ˜J˜ J˜—šÏn œœ˜Jšœœœ ˜<—Jš˜Jšœœ˜J˜Jšœœœ˜J˜š žœœœœ œœ˜:J˜ J˜J˜J˜—š žœœœ œœ˜IJšœœ˜J˜J˜—šžœœœœ˜?Jšœœ˜J˜J˜—š žœœœœ œœ˜8J˜ J˜ J˜ J˜J˜—š ž œœœ œœ˜GJšœœ˜J˜J˜—šž œœœœ˜=Jšœœ˜J˜J˜—š žœœœ œœ˜YJ˜J˜J˜J˜—šžœœœœ˜OJ˜J˜J˜J˜—š žœœœ œœ˜]J˜J˜J˜J˜—šžœœœœ˜SJ˜J˜J˜J˜—š žœœœœ œœ˜8J˜J˜ J˜J˜—š ž œœœ œœ˜GJšœœ˜J˜J˜—šž œœœœ˜=Jšœœ˜J˜J˜—š žœœœ œœ˜WJ˜ J˜ J˜J˜—šžœœœœ˜MJ˜J˜J˜J˜—š žœœœ œœ˜Kšœœ˜ Jšœœœ˜"J˜ J˜—š˜Jšœœ˜ —J˜J˜—šžœœœœ˜Ašœœœ˜J˜—J˜šœ˜J˜J˜—J˜J˜J˜—š žœœœ œœ˜[J˜!J˜J˜Jšœœ˜Jšœ œœ˜(šœœœ ˜J˜!Jšœ˜—J˜J˜J˜—šžœœœœ˜QJ˜J˜J˜!šœœœ˜"J˜Jšœ˜—J˜J˜—š žœœœ œœ˜UJ˜$J˜J˜—šžœœœœ˜KJ˜"J˜J˜—š žœœœ œœ˜YJ˜Jšœœ˜Jšœ œœ˜(šœœœ ˜J˜!Jšœ˜—J˜J˜J˜—šžœœœœ˜OJ˜!šœœœ˜"J˜Jšœ˜—J˜J˜—š žœœœ œœ˜UJ˜J˜J˜—šžœœœœ˜KJ˜J˜J˜—š žœœœ œœ˜YJšœœ ˜J˜šœ˜˜ Jš œœ œœ œ˜ZJ˜J˜J˜—˜Jš œœœœœ˜fJ˜J˜—Jšœœ˜—J˜J˜—šžœœœœ˜OJ˜!šœ˜˜ Jšœœ œœ˜:J˜J˜—˜Jšœœœœ˜@J˜—Jšœœ˜—J˜J˜—Jšœ˜—…—(ü