DIRECTORY SunRPC, SunRPCAuth, Rope, MS, NS, MSGetPut, NSGetPut, NMSGetPut, NMS; NMSServerImpl: CEDAR PROGRAM IMPORTS Rope, SunRPC, MSGetPut, NSGetPut, NMSGetPut EXPORTS NMS = BEGIN ROPE: TYPE = Rope.ROPE; Handle: TYPE = SunRPC.Handle; Conversation: TYPE = SunRPCAuth.Conversation; defaultReplyTTL: CARDINAL _ 10; MakeNMS2Server: PUBLIC PROC[ data: REF, servernoop: NMS.servernoopProc, querycentralnms: NMS.querycentralnmsProc, updatecentralnms: NMS.updatecentralnmsProc, querylocalnms: NMS.querylocalnmsProc, querymaintain: NMS.querymaintainProc, setdebuglevel: NMS.setdebuglevelProc, checkconfigfiles: NMS.checkconfigfilesProc, nsinsert: NMS.nsinsertProc, nsdelete: NMS.nsdeleteProc, nsreplace: NMS.nsreplaceProc, nsfind: NMS.nsfindProc, msmaintain: NMS.msmaintainProc, msunmaintain: NMS.msunmaintainProc ] RETURNS [SunRPC.Server] ~ { pseudoClient: NMS.NMS2 ~ NEW[NMS.NMS2Object _ [ rpcHandle ~ NIL, rpcConversation ~ NIL, data ~ data, servernoop ~ servernoop, querycentralnms ~ querycentralnms, updatecentralnms ~ updatecentralnms, querylocalnms ~ querylocalnms, querymaintain ~ querymaintain, setdebuglevel ~ setdebuglevel, checkconfigfiles ~ checkconfigfiles, nsinsert ~ nsinsert, nsdelete ~ nsdelete, nsreplace ~ nsreplace, nsfind ~ nsfind, msmaintain ~ msmaintain, msunmaintain ~ msunmaintain ]]; unbound: SunRPC.Server ~ NEW[SunRPC.ServerObject _ [ pgm ~ NMS.NMSPrognum, version ~ NMS.version2, clientData ~ pseudoClient, serverProc ~ NMS2Handler ]]; RETURN [unbound]; }; NMS2Handler: SunRPC.ServerProc -- [h: Handle, c: Conversation, proc: CARD, clientData: REFANY -- RETURNS [doReply: BOOLEAN, replyTimeToLive: CARDINAL] -- = { o: NMS.NMS2 _ NARROW[clientData]; doReply _ TRUE; replyTimeToLive _ defaultReplyTTL; SELECT proc FROM 0 => servernoop2[h, c, o]; 7 => querycentralnms2[h, c, o]; 8 => updatecentralnms2[h, c, o]; 9 => querylocalnms2[h, c, o]; 10 => querymaintain2[h, c, o]; 11 => setdebuglevel2[h, c, o]; 12 => checkconfigfiles2[h, c, o]; 1 => nsinsert2[h, c, o]; 2 => nsdelete2[h, c, o]; 3 => nsreplace2[h, c, o]; 4 => nsfind2[h, c, o]; 5 => msmaintain2[h, c, o]; 6 => msunmaintain2[h, c, o]; ENDCASE => ERROR SunRPC.Error[$wrongProc]; }; servernoop2: PROC[h: Handle, c: Conversation, o: NMS.NMS2] = { o.servernoop[o]; SunRPC.StartReply[h]; }; querycentralnms2: PROC[h: Handle, c: Conversation, o: NMS.NMS2] = { host: ROPE; state: NMS.ClaimState; out: NMS.QueryCentralNMSreturn; host _ SunRPC.GetRope[h]; state _ NMSGetPut.GetClaimState[h]; out _ o.querycentralnms[o, host, state]; SunRPC.StartReply[h]; NMSGetPut.PutQueryCentralNMSreturn[h, out]; }; updatecentralnms2: PROC[h: Handle, c: Conversation, o: NMS.NMS2] = { host: NS.String; how: NMS.UpdateType; objs: NMS.SeqType0; out: NMS.ReturnCodes; host _ NSGetPut.GetString[h]; how _ NMSGetPut.GetUpdateType[h]; { len: INT _ SunRPC.GetInt32[h]; objs _ NEW[NMS.SeqType0Object[len]]; FOR i: INT IN [0..len) DO objs[i] _ NMSGetPut.GetUpdateObject[h]; ENDLOOP; }; out _ o.updatecentralnms[o, host, how, objs]; SunRPC.StartReply[h]; NMSGetPut.PutReturnCodes[h, out]; }; querylocalnms2: PROC[h: Handle, c: Conversation, o: NMS.NMS2] = { centralHost: ROPE; out: NMS.QueryLocalNMSreturn; centralHost _ SunRPC.GetRope[h]; out _ o.querylocalnms[o, centralHost]; SunRPC.StartReply[h]; NMSGetPut.PutQueryLocalNMSreturn[h, out]; }; querymaintain2: PROC[h: Handle, c: Conversation, o: NMS.NMS2] = { idStr: ROPE; out: NMS.QueryMaintainreturn; idStr _ SunRPC.GetRope[h]; out _ o.querymaintain[o, idStr]; SunRPC.StartReply[h]; NMSGetPut.PutQueryMaintainreturn[h, out]; }; setdebuglevel2: PROC[h: Handle, c: Conversation, o: NMS.NMS2] = { in: INT32; out: NMS.ReturnCodes; in _ SunRPC.GetInt32[h]; out _ o.setdebuglevel[o, in]; SunRPC.StartReply[h]; NMSGetPut.PutReturnCodes[h, out]; }; checkconfigfiles2: PROC[h: Handle, c: Conversation, o: NMS.NMS2] = { out: NMS.ReturnCodes; out _ o.checkconfigfiles[o]; SunRPC.StartReply[h]; NMSGetPut.PutReturnCodes[h, out]; }; nsinsert2: PROC[h: Handle, c: Conversation, o: NMS.NMS2] = { registrationKind: NS.String; object: NS.Object; pid: INT32; domain: NS.Domain; out: NS.Insertreturn; registrationKind _ NSGetPut.GetString[h]; object _ NSGetPut.GetObject[h]; pid _ SunRPC.GetInt32[h]; domain _ NSGetPut.GetDomain[h]; out _ o.nsinsert[o, registrationKind, object, pid, domain]; SunRPC.StartReply[h]; NSGetPut.PutInsertreturn[h, out]; }; nsdelete2: PROC[h: Handle, c: Conversation, o: NMS.NMS2] = { uid: NS.String; domain: NS.Domain; out: NS.ReturnCodes; uid _ NSGetPut.GetString[h]; domain _ NSGetPut.GetDomain[h]; out _ o.nsdelete[o, uid, domain]; SunRPC.StartReply[h]; NSGetPut.PutReturnCodes[h, out]; }; nsreplace2: PROC[h: Handle, c: Conversation, o: NMS.NMS2] = { registrationKind: NS.String; object: NS.Object; uid: NS.String; domain: NS.Domain; out: NS.ReturnCodes; registrationKind _ NSGetPut.GetString[h]; object _ NSGetPut.GetObject[h]; uid _ NSGetPut.GetString[h]; domain _ NSGetPut.GetDomain[h]; out _ o.nsreplace[o, registrationKind, object, uid, domain]; SunRPC.StartReply[h]; NSGetPut.PutReturnCodes[h, out]; }; nsfind2: PROC[h: Handle, c: Conversation, o: NMS.NMS2] = { patterns: NS.Object; projection: NS.ProjectionList; domain: NS.Domain; out: NS.Findreturn; patterns _ NSGetPut.GetObject[h]; projection _ NSGetPut.GetProjectionList[h]; domain _ NSGetPut.GetDomain[h]; out _ o.nsfind[o, patterns, projection, domain]; SunRPC.StartReply[h]; NSGetPut.PutFindreturn[h, out]; }; msmaintain2: PROC[h: Handle, c: Conversation, o: NMS.NMS2] = { idStr: ROPE; progName: ROPE; progArgs: MS.SeqType0; uid: INT32; pid: INT32; out: MS.Maintainreturn; idStr _ SunRPC.GetRope[h]; progName _ SunRPC.GetRope[h]; { len: INT _ SunRPC.GetInt32[h]; progArgs _ NEW[MS.SeqType0Object[len]]; FOR i: INT IN [0..len) DO progArgs[i] _ MSGetPut.GetString[h]; ENDLOOP; }; uid _ SunRPC.GetInt32[h]; pid _ SunRPC.GetInt32[h]; out _ o.msmaintain[o, idStr, progName, progArgs, uid, pid]; SunRPC.StartReply[h]; MSGetPut.PutMaintainreturn[h, out]; }; msunmaintain2: PROC[h: Handle, c: Conversation, o: NMS.NMS2] = { idStr: ROPE; out: MS.ReturnCodes; idStr _ SunRPC.GetRope[h]; out _ o.msunmaintain[o, idStr]; SunRPC.StartReply[h]; MSGetPut.PutReturnCodes[h, out]; }; END. \ NMSServerImpl.mesa Please do not edit this file. It was generated using CedarRPCGen. ÊJ•NewlineDelimiter ™J™J™J™#J˜šÏk ˜ J˜J˜ J˜Jšœ˜Jšœ˜J˜ J˜ J˜ Jšœ˜J˜—šÏn œœ˜Jšœ,˜3Jšœœ˜ —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˜J˜J˜$J˜J˜J˜J˜J˜J˜—J˜J˜——šœœ˜4Jšœœ ˜Jšœ œ ˜J˜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˜šœœ œœ˜CJšœœ˜ 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˜šœœ œœ˜AJšœ œ˜Jšœœ˜J˜ ˜J˜ —J˜J˜)—J˜J˜šœœ œœ˜AJšœœ˜ Jšœœ˜J˜˜J˜—J˜J˜)—J˜J˜šœœ œœ˜AJšœœ˜ 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˜J˜—J˜J˜#—J˜J˜šœœ œœ˜@Jšœœ˜ Jšœœ ˜J˜˜J˜—J˜J˜ —J˜J˜J˜Jšœ˜—…—Ä