<<>> <> <> <> DIRECTORY Rope, Arpa, MS, NS, SunRPCAuth, SunRPC; NMS: CEDAR DEFINITIONS = BEGIN ROPE: TYPE = Rope.ROPE; NAME: ROPE = "com.xerox.parc/NMS version 2"; NMSPORT: INT32 = 1334; ReturnCodes: TYPE = MACHINE DEPENDENT { Success(0), NotMaintained(1) }; ReturnCodesNames: READONLY ARRAY ReturnCodes OF ROPE; ClaimState: TYPE = MACHINE DEPENDENT { notClaimed(0), checking(1), claimed(2) }; ClaimStateNames: READONLY ARRAY ClaimState OF ROPE; QueryCentralNMSargs: TYPE = RECORD [ host: ROPE, state: ClaimState ]; QueryCentralNMSreturn: TYPE = RECORD [ state: ClaimState, count: INT32 ]; UpdateType: TYPE = MACHINE DEPENDENT { add(0), replace(1) }; UpdateTypeNames: READONLY ARRAY UpdateType OF ROPE; UpdateObjectRecord: TYPE = RECORD [ obj: NS.Object, uid: NS.String ]; UpdateObject: TYPE = REF UpdateObjectRecord; UpdateCentralNMSargs: TYPE = RECORD [ host: NS.String, how: UpdateType, objs: SeqType0 ]; SeqType0: TYPE = REF SeqType0Object; SeqType0Object: TYPE = RECORD [SEQUENCE size: [0..LAST[INT32]) OF UpdateObject]; QueryLocalNMSargs: TYPE = RECORD [ centralHost: ROPE ]; QueryLocalNMSreturn: TYPE = RECORD [ objs: SeqType1 ]; SeqType1: TYPE = REF SeqType1Object; SeqType1Object: TYPE = RECORD [SEQUENCE size: [0..LAST[INT32]) OF UpdateObject]; QueryMaintainargs: TYPE = RECORD [ idStr: ROPE ]; QueryMaintainreturn: TYPE = REF QueryMaintainreturnObject; QueryMaintainreturnObject: TYPE = RECORD [ union: SELECT returnCode: ReturnCodes FROM Success => [pid: INT32], NotMaintained => [], ENDCASE]; NMSPrognum: CARDINAL = 822084002; version2: CARDINAL = 2; servernoopProc: TYPE = PROC[o: NMS2]; querycentralnmsProc: TYPE = PROC[o: NMS2, host: ROPE, state: ClaimState] RETURNS [res: QueryCentralNMSreturn]; updatecentralnmsProc: TYPE = PROC[o: NMS2, host: NS.String, how: UpdateType, objs: SeqType0] RETURNS [res: ReturnCodes]; querylocalnmsProc: TYPE = PROC[o: NMS2, centralHost: ROPE] RETURNS [res: QueryLocalNMSreturn]; querymaintainProc: TYPE = PROC[o: NMS2, idStr: ROPE] RETURNS [res: QueryMaintainreturn]; setdebuglevelProc: TYPE = PROC[o: NMS2, in: INT32] RETURNS [res: ReturnCodes]; checkconfigfilesProc: TYPE = PROC[o: NMS2] RETURNS [res: ReturnCodes]; nsinsertProc: TYPE = PROC[o: NMS2, registrationKind: NS.String, object: NS.Object, pid: INT32, domain: NS.Domain] RETURNS [res: NS.Insertreturn]; nsdeleteProc: TYPE = PROC[o: NMS2, uid: NS.String, domain: NS.Domain] RETURNS [res: NS.ReturnCodes]; nsreplaceProc: TYPE = PROC[o: NMS2, registrationKind: NS.String, object: NS.Object, uid: NS.String, domain: NS.Domain] RETURNS [res: NS.ReturnCodes]; nsfindProc: TYPE = PROC[o: NMS2, patterns: NS.Object, projection: NS.ProjectionList, domain: NS.Domain] RETURNS [res: NS.Findreturn]; msmaintainProc: TYPE = PROC[o: NMS2, idStr: ROPE, progName: ROPE, progArgs: MS.SeqType0, uid: INT32, pid: INT32] RETURNS [res: MS.Maintainreturn]; msunmaintainProc: TYPE = PROC[o: NMS2, idStr: ROPE] RETURNS [res: MS.ReturnCodes]; NMS2: TYPE = REF NMS2Object; NMS2Object: TYPE = RECORD [ servernoop: servernoopProc, querycentralnms: querycentralnmsProc, updatecentralnms: updatecentralnmsProc, querylocalnms: querylocalnmsProc, querymaintain: querymaintainProc, setdebuglevel: setdebuglevelProc, checkconfigfiles: checkconfigfilesProc, nsinsert: nsinsertProc, nsdelete: nsdeleteProc, nsreplace: nsreplaceProc, nsfind: nsfindProc, msmaintain: msmaintainProc, msunmaintain: msunmaintainProc, rpcHandle: SunRPC.Handle _ NIL, rpcConversation: SunRPCAuth.Conversation _ NIL, data: REF ANY _ NIL ]; MakeNMS2Client: PROC[h: SunRPC.Handle, c: SunRPCAuth.Conversation] RETURNS [NMS2]; MakeNMS2Server: PROC[ data: REF, servernoop: servernoopProc, querycentralnms: querycentralnmsProc, updatecentralnms: updatecentralnmsProc, querylocalnms: querylocalnmsProc, querymaintain: querymaintainProc, setdebuglevel: setdebuglevelProc, checkconfigfiles: checkconfigfilesProc, nsinsert: nsinsertProc, nsdelete: nsdeleteProc, nsreplace: nsreplaceProc, nsfind: nsfindProc, msmaintain: msmaintainProc, msunmaintain: msunmaintainProc ] RETURNS [SunRPC.Server]; END.