3

テストフレームワークで使用するシミュレーターを設計するc ++作業を行っています。とにかく、テスト中のシステムは、私が広範囲に使用している RCF API を公開しています。問題は、(実際のシステムをシミュレートするために) 接続ごとに 1 つの「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 に答える