快速业务通道

让C++也支持RMI

作者 佚名技术 来源 程序设计 浏览 发布时间 2012-06-29

封装了调用函数ID,参数列表,返回值信息等内容。

class ParaListAnalyser:函数参数表解析器。

此为一模板,将参数表中的变量强制转换为指定类型。

服务器端调用本地函数时需要利用此模板解析客户端所传入的参数列表。

各种数据结构以及相互调用关系如图所示

客户端类图

让C++也支持RMI

服务器端类图

让C++也支持RMI

主要宏定义

本系统采用大量的宏替换,大体可分为“类定义宏”以及“函数添加宏”,以下分别加以说明。

类定义宏

类定义宏完成客户端以及服务器端模板的定义功能。具体如下。

客户端模板定义:

#define MY_RMI_CLIENT_CLASS_DECLARE(client_class_name)		\
template<typename classname> \
class client_class_name:public RMIClientBase \
{ \
private: \

说明:

本模板定义比较简单,仅仅声明一个类模板,使之继承自“ RMIClientBase ”。

服务器端模板定义:

#define MY_RMI_SERVER_CLASS_DECLARE(server_class_name)		\
template <typename TServer> \
class server_class_name :public RMIServerBase \
{ \
public: \
server_class_name() \
{ \
mServerClassName=typeid(TServer).name(); \
pMServer=NULL; \
}; \
bool AddLocalObject(TServer* pTServer) \
{ \
pMServer=pTServer;return true; \
}; \
bool IsRunning(); \
private: \
std::string mServerClassName; \
TServer* pMServer; \
void CallLocalFunction(const char* pFuncID, void* pParaList,int tParaListLenght,SOCKET tSocket)\
{ \
std::string FunTempID;

说明:

1.定义一模板类,并使之继承自“ RMIServerBase ”;

2.添加构造函数,并初始化“本地对象指针”(pMServer),以及“本地对象类型名称”(mServerClassName);

3.定义私有属性:pMServer,mServerClassName;

4.实现基类(RMIServerBase)之纯虚函数 CallLocalFunction;

接下来的函数添加宏中会逐渐完善CallLocalFunction 方法。

函数添加宏

函数添加宏末尾的数字代表所要添加的函数的参数数目。最多允许添加具有9个函数参数的函数。

宏定义中各参数意义依次为:返回值,函数名,参数1,参数2,。。。

例如

MY_RMI_CLIENT_FUNCTION_ADD_P2(double,sum,double,double)

第一个“double” 表示函数返回值为“double”类型。

函数名称为“sum”;

函数具有两个参数,且两者均为“double”类型。

如果所要添加的函数返回值为“void”,则调用含有“_V_”的宏。

例如要添加具有一个参数,且没有返回值的函数:

MY_RMI_SERVER_FUNCTION_ADD_V_P1(MyFunction,int)

此宏添加一个返回值为“void”类型,只有一个“int”类型参数,名称为“MyFunction”的函数。

客户端与服务器端函数添加宏略有不同,以下分开说明。

客户端函数添加宏

分为“有参数”与“无参数”两种。以下均以添加具有两个参数的函数为例来说明。

有参数

#define MY_RMI_CLIENT_FUNCTION_ADD_P2(R,FunName,P1,P2)\
public:\
R FunName(P1 p1,P2 p2)\
{\
return FunctionObject<R,P1,P2>()(JOINSTRING4(R,FunName,P1,P2),this,p1,p2);\
}

1.直接在由“MY_RMI_CLIENT_CLASS_DECLARE”宏定义的类中添加函数名为“FunName”,返回值为“R”,参数分别为&l

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号