DIRECTORY Rope, SunRPC, MS, MSGetPut; MSGetPutImpl: CEDAR PROGRAM IMPORTS SunRPC EXPORTS MS, MSGetPut = BEGIN Handle: TYPE = SunRPC.Handle; ROPE: TYPE = Rope.ROPE; ReturnCodesNames: PUBLIC ARRAY MS.ReturnCodes OF ROPE _ [ "Success", "IllegalMaintainSpec", "CouldntRunProgram", "IllegalMaintainID" ]; GetReturnCodes: PUBLIC PROC[h: Handle] RETURNS [res: MS.ReturnCodes] = { res _ VAL[SunRPC.GetInt32[h]]; }; PutReturnCodes: PUBLIC PROC[h: Handle, in: MS.ReturnCodes] = { SunRPC.PutInt32[h, ORD[in]]; }; GetString: PUBLIC PROC[h: Handle] RETURNS [res: MS.String] = { res _ SunRPC.GetRope[h]; }; PutString: PUBLIC PROC[h: Handle, in: MS.String] = { SunRPC.PutRope[h, in]; }; GetMaintainargs: PUBLIC PROC[h: Handle] RETURNS [res: MS.Maintainargs] = { res.idStr _ SunRPC.GetRope[h]; res.progName _ SunRPC.GetRope[h]; { len: INT _ SunRPC.GetInt32[h]; res.progArgs _ NEW[MS.SeqType0Object[len]]; FOR i: INT IN [0..len) DO res.progArgs[i] _ GetString[h]; ENDLOOP; }; res.uid _ SunRPC.GetInt32[h]; res.pid _ SunRPC.GetInt32[h]; }; PutMaintainargs: PUBLIC PROC[h: Handle, in: MS.Maintainargs] = { SunRPC.PutRope[h, in.idStr]; SunRPC.PutRope[h, in.progName]; SunRPC.PutInt32[h, in.progArgs.size]; FOR i: INT IN [0..in.progArgs.size) DO PutString[h, in.progArgs[i]]; ENDLOOP; SunRPC.PutInt32[h, in.uid]; SunRPC.PutInt32[h, in.pid]; }; GetMaintainreturn: PUBLIC PROC[h: Handle] RETURNS [res: MS.Maintainreturn] = { tag: MS.ReturnCodes; tag _ GetReturnCodes[h]; SELECT tag FROM Success => { v: REF Success MS.MaintainreturnObject _ NEW[Success MS.MaintainreturnObject]; v.pid _ SunRPC.GetInt32[h]; res _ v; }; IllegalMaintainID => { v: REF IllegalMaintainID MS.MaintainreturnObject _ NEW[IllegalMaintainID MS.MaintainreturnObject]; res _ v; }; CouldntRunProgram => { v: REF CouldntRunProgram MS.MaintainreturnObject _ NEW[CouldntRunProgram MS.MaintainreturnObject]; res _ v; }; IllegalMaintainSpec => { v: REF IllegalMaintainSpec MS.MaintainreturnObject _ NEW[IllegalMaintainSpec MS.MaintainreturnObject]; res _ v; }; ENDCASE => NULL; }; PutMaintainreturn: PUBLIC PROC[h: Handle, in: MS.Maintainreturn] = { PutReturnCodes[h, in.returnCode]; SELECT in.returnCode FROM Success => { v: REF Success MS.MaintainreturnObject _ NARROW[in]; SunRPC.PutInt32[h, v.pid]; }; IllegalMaintainID => { v: REF IllegalMaintainID MS.MaintainreturnObject _ NARROW[in]; }; CouldntRunProgram => { v: REF CouldntRunProgram MS.MaintainreturnObject _ NARROW[in]; }; IllegalMaintainSpec => { v: REF IllegalMaintainSpec MS.MaintainreturnObject _ NARROW[in]; }; ENDCASE => NULL; }; GetUnmaintainargs: PUBLIC PROC[h: Handle] RETURNS [res: MS.Unmaintainargs] = { res.idStr _ SunRPC.GetRope[h]; }; PutUnmaintainargs: PUBLIC PROC[h: Handle, in: MS.Unmaintainargs] = { SunRPC.PutRope[h, in.idStr]; }; END. \ MSGetPutImpl.mesa Please do not edit this file. It was generated using CedarRPCGen. ÊÙ•NewlineDelimiter ™J™J™J™#J˜šÏk ˜ J˜J˜Jšœ˜J˜ J˜—šÏn œœ˜Jšœ œœ ˜&—Jš˜Jšœœ˜J˜Jšœœœ˜J˜š žœœœœ œœ˜9J˜ J˜J˜J˜J˜J˜—š žœœœ œœ˜HJšœœ˜J˜J˜—šžœœœœ˜>Jšœœ˜J˜J˜—š ž œœœ œœ ˜>J˜J˜J˜—šž œœœœ ˜4J˜J˜J˜—š žœœœ œœ˜JJ˜J˜!J˜Jšœœ˜Jšœœœ˜+šœœœ ˜J˜Jšœ˜—J˜J˜J˜J˜J˜—šžœœœœ˜@J˜J˜J˜%šœœœ˜&J˜Jšœ˜—J˜J˜J˜J˜—š žœœœ œœ˜NJšœœ ˜J˜šœ˜˜ Jš œœ œœ œ˜NJ˜J˜J˜—˜Jš œœœœœ˜bJ˜J˜—˜Jš œœœœœ˜bJ˜J˜—˜Jš œœœœœ˜fJ˜J˜—Jšœœ˜—J˜J˜—šžœœœœ˜DJ˜!šœ˜˜ Jšœœ œœ˜4J˜J˜—˜Jšœœœœ˜>J˜—˜Jšœœœœ˜>J˜—˜Jšœœœœ˜@J˜—Jšœœ˜—J˜J˜—š žœœœ œœ˜NJ˜J˜J˜—šžœœœœ˜DJ˜J˜J˜—Jšœ˜—…— Ø