【发布时间】:2014-10-29 12:20:04
【问题描述】:
我正在做一些 c++ 工作,设计一个用于测试框架的模拟器。 无论如何,被测系统正在公开我广泛使用的 RCF API。问题是我只被允许(模拟真实系统)每个连接有一个“RCF 客户端”。这意味着我将不得不安全地使用客户端线程。
通常我会通过名称来调用 RCF 方法:
client->methodA(param);
现在我必须(我认为)将每个方法包装在一个包含互斥调用的方法中:
virtual class RCFClientWrapper
{
protected:
boost::mutex mtx;
public:
virtual RCFClientWrapper();
}
class FunctionAClient:RCFClientWrapper
{
private:
boost::shared_ptr<RcfClient<IRCFFunctionA_IDL> > client;
public:
/*....Stuff....*/
void methodA(param)
{
boost::lock_guard<boost::mutex> lock(mtx);
client->methodA(param);
}
}
首先,有没有更好的方法来做到这一点? 其次,有没有办法“自动”完成所有这些小方法?而不是必须为每个方法都这样做?似乎有很多不必要的复制/意大利面。
【问题讨论】:
-
哦,谷歌搜索“rcf 客户端”可能是远程调用框架,又是一个 RPC 东西。过去,像 Corba 和 DCOM 以及 Java 之类的技术都由负责包装器的代码生成器支持。
-
哦,抱歉忘了说 RCF 是什么。 deltavsoft.com/RCF.html
标签: c++ thread-safety rcf