当前位置导航:炫浪网>>网络学院>>编程开发>>C++教程>>C++基础入门教程

C++实现远程服务对象调用

    最近开发了一个基于ACE实现的C++ Service框架,每一个服务实现为一个插件,客户端通过远程调用接口即可访问服务对象提供的服务,客户端接口的包装如下所示:

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    // CPPX_LoginService.h
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////

 1#pragma once
 2#include "CPPX_SessionIO.h"
 3
 4class CPPX_LoginService
 5{
 6    class LoginRequest : public CPPX_Packet<LoginRequest>
 7    {
 8    public:
 9        string UserName;
10        string PassWord;
11        template<class Archive>
12        void serialize(Archive & ar, const unsigned int version){
13            ar & UserName;
14            ar & PassWord;
15        }

16        LoginRequest(void) : CPPX_Packet<LoginRequest>(*this{}
17    }
;
18
19    class LoginResult : public CPPX_Packet<LoginResult>
20    {
21    public:
22        bool success;
23        template<class Archive>
24        void serialize(Archive & ar, const unsigned int version){
25            ar & success;
26        }

27        LoginResult(void) : CPPX_Packet<LoginResult>(*this){}
28    }
;
29
30    CPPX_SessionIO & m_peer;
31
32public:
33    CPPX_LoginService(CPPX_SessionIO &peer) : m_peer(peer) {}
34
35    bool apiUserLogin(string UserName,string PassWord){
36        LoginRequest login_request;
37        login_request.ServiceName = "authsvc";
38        login_request.RequestType = "apiUserLogin";
39        login_request.UserName    = UserName;
40        login_request.PassWord    = PassWord;
41        LoginResult login_result;
42        uint reuslt = m_peer.call(login_request,login_result);
43        return (reuslt==0)&&(login_result.success);
44    }

45}
;

相关内容
赞助商链接