【问题标题】:Wrapper design in C++C++ 中的包装器设计
【发布时间】: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


【解决方案1】:

你为什么不考虑使用一个代理类来实现Proxy Pattern,其中一个对象是其他对象的接口或中介。

【讨论】:

    猜你喜欢
    • 2015-11-26
    • 1970-01-01
    • 2011-12-15
    • 2015-05-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-28
    • 1970-01-01
    相关资源
    最近更新 更多