
最近开发了一个基于ACE实现的C++ Service框架,每一个服务实现为一个插件,客户端通过远程调用接口即可访问服务对象提供的服务,客户端接口的包装如下所示:
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// CPPX_LoginService.h
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
1
#pragma once
2
#include "CPPX_SessionIO.h"
3
4
class 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
32
public:
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
};