-- TabPostOfficeServerImpl.mesa -- Please do not edit this file. -- It was generated using CedarRPCGen. DIRECTORY SunRPC, SunRPCAuth, Rope, TabPostOfficeGetPut, TabPostOffice; TabPostOfficeServerImpl: CEDAR PROGRAM IMPORTS Rope, SunRPC, TabPostOfficeGetPut EXPORTS TabPostOffice = BEGIN ROPE: TYPE = Rope.ROPE; Handle: TYPE = SunRPC.Handle; Conversation: TYPE = SunRPCAuth.Conversation; defaultReplyTTL: CARDINAL ← 10; MakeServer1Server: PUBLIC PROC[ data: REF, tpostartsession: TabPostOffice.tpostartsessionProc, tpogetmsginfo: TabPostOffice.tpogetmsginfoProc, tpogetmsgtext: TabPostOffice.tpogetmsgtextProc, tpochecknewmail: TabPostOffice.tpochecknewmailProc, tpogetfolders: TabPostOffice.tpogetfoldersProc, tpomarkmsg: TabPostOffice.tpomarkmsgProc, tpoendsession: TabPostOffice.tpoendsessionProc ] RETURNS [SunRPC.Server] ~ { pseudoClient: TabPostOffice.Server1 ~ NEW[TabPostOffice.Server1Object ← [ rpcHandle ~ NIL, rpcConversation ~ NIL, data ~ data, tpostartsession ~ tpostartsession, tpogetmsginfo ~ tpogetmsginfo, tpogetmsgtext ~ tpogetmsgtext, tpochecknewmail ~ tpochecknewmail, tpogetfolders ~ tpogetfolders, tpomarkmsg ~ tpomarkmsg, tpoendsession ~ tpoendsession ]]; unbound: SunRPC.Server ~ NEW[SunRPC.ServerObject ← [ pgm ~ TabPostOffice.Server, version ~ TabPostOffice.Vers1, clientData ~ pseudoClient, serverProc ~ Server1Handler ]]; RETURN [unbound]; }; Server1Handler: SunRPC.ServerProc -- [h: Handle, c: Conversation, proc: CARD, clientData: REFANY -- RETURNS [doReply: BOOLEAN, replyTimeToLive: CARDINAL] -- = { o: TabPostOffice.Server1 ← NARROW[clientData]; doReply ← TRUE; replyTimeToLive ← defaultReplyTTL; SELECT proc FROM 1 => tpostartsession1[h, c, o]; 2 => tpogetmsginfo1[h, c, o]; 3 => tpogetmsgtext1[h, c, o]; 4 => tpochecknewmail1[h, c, o]; 5 => tpogetfolders1[h, c, o]; 6 => tpomarkmsg1[h, c, o]; 7 => tpoendsession1[h, c, o]; ENDCASE => ERROR SunRPC.Error[$wrongProc]; }; tpostartsession1: PROC[h: Handle, c: Conversation, o: TabPostOffice.Server1] = { numselects: INT32; plist: TabPostOffice.PropInfoArray; numorders: INT32; olist: TabPostOffice.PropertyArray; out: TabPostOffice.SessionResult; numselects ← SunRPC.GetInt32[h]; plist ← TabPostOfficeGetPut.GetPropInfoArray[h]; numorders ← SunRPC.GetInt32[h]; olist ← TabPostOfficeGetPut.GetPropertyArray[h]; out ← o.tpostartsession[o, numselects, plist, numorders, olist]; SunRPC.StartReply[h]; TabPostOfficeGetPut.PutSessionResult[h, out]; }; tpogetmsginfo1: PROC[h: Handle, c: Conversation, o: TabPostOffice.Server1] = { beginId: TabPostOffice.MsgID; endId: TabPostOffice.MsgID; out: TabPostOffice.MsgInfoResult; beginId ← TabPostOfficeGetPut.GetMsgID[h]; endId ← TabPostOfficeGetPut.GetMsgID[h]; out ← o.tpogetmsginfo[o, beginId, endId]; SunRPC.StartReply[h]; TabPostOfficeGetPut.PutMsgInfoResult[h, out]; }; tpogetmsgtext1: PROC[h: Handle, c: Conversation, o: TabPostOffice.Server1] = { msgId: TabPostOffice.MsgID; beginByte: INT32; numBytes: INT32; whence: TabPostOffice.Whences; out: TabPostOffice.MsgTextResult; msgId ← TabPostOfficeGetPut.GetMsgID[h]; beginByte ← SunRPC.GetInt32[h]; numBytes ← SunRPC.GetInt32[h]; whence ← TabPostOfficeGetPut.GetWhences[h]; out ← o.tpogetmsgtext[o, msgId, beginByte, numBytes, whence]; SunRPC.StartReply[h]; TabPostOfficeGetPut.PutMsgTextResult[h, out]; }; tpochecknewmail1: PROC[h: Handle, c: Conversation, o: TabPostOffice.Server1] = { out: TabPostOffice.NewMailResult; out ← o.tpochecknewmail[o]; SunRPC.StartReply[h]; TabPostOfficeGetPut.PutNewMailResult[h, out]; }; tpogetfolders1: PROC[h: Handle, c: Conversation, o: TabPostOffice.Server1] = { out: TabPostOffice.FoldersResult; out ← o.tpogetfolders[o]; SunRPC.StartReply[h]; TabPostOfficeGetPut.PutFoldersResult[h, out]; }; tpomarkmsg1: PROC[h: Handle, c: Conversation, o: TabPostOffice.Server1] = { msgId: TabPostOffice.MsgID; markID: ROPE; markMsg: ROPE; out: TabPostOffice.ErrorInfo; msgId ← TabPostOfficeGetPut.GetMsgID[h]; markID ← SunRPC.GetRope[h]; markMsg ← SunRPC.GetRope[h]; out ← o.tpomarkmsg[o, msgId, markID, markMsg]; SunRPC.StartReply[h]; TabPostOfficeGetPut.PutErrorInfo[h, out]; }; tpoendsession1: PROC[h: Handle, c: Conversation, o: TabPostOffice.Server1] = { out: TabPostOffice.ErrorInfo; out ← o.tpoendsession[o]; SunRPC.StartReply[h]; TabPostOfficeGetPut.PutErrorInfo[h, out]; }; END.