最近开发了一个基于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};