3

我正在做一些 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);
    }
}

首先有没有更好的方法来做到这一点?其次,有没有办法“自动”完成所有这些小方法?而不是必须为每个方法都这样做?似乎有很多不必要的复制/意大利面。

4

1 回答 1

0

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

于 2014-10-29T12:45:29.557 回答