2014-10-29 4 views
3

테스트 프레임 워크에서 사용할 시뮬레이터를 설계하는 C++ 작업을하고 있습니다. 어쨌든, 테스트중인 시스템이 광범위하게 사용하고있는 RCF API를 노출하고 있습니다. 문제는 연결 당 하나의 "RCF 클라이언트"만 가질 수 있도록 허용되었습니다 (실제 시스템을 시뮬레이트하는 것). 이것은 클라이언트 스레드를 안전하게 사용해야 함을 의미합니다.C++의 래퍼 디자인

일반적으로 나는 이름 만하여 RCF 방법을 부를 것이다 :

client->methodA(param); 

을 지금은 대신에 I가있다 (나는 생각한다) 뮤텍스 호출을 포함하는 방법에서 각각의 모든 방법을 포장 :

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); 
    } 
} 

우선이 작업을 수행하는 더 좋은 방법이 있습니까? 둘째, 이러한 모든 작은 메서드를 "자동으로"수행하는 방법이 있습니까? 모든 각 방법마다이 작업을 수행하는 대신에? 그것은 불필요한 복사/파스타의 많은 것처럼 보입니다.

+0

RCF =? –

+0

Framework, 또 다른 RPC 작업. 예전에는 Corba, DCOM, Java 등의 기술은 래퍼를 관리하는 코드 생성기에서 모두 지원되었습니다. –

+0

오, 죄송합니다. RCF가 무엇인지 언급하는 것을 잊어 버렸습니다. http://www.deltavsoft.com/RCF.html – jimmy

답변

0

Proxy Pattern을 구현하는 데 사용되는 프록시 클래스를 사용하는 이유는 개체가 인터페이스이거나 다른 개체에 대한 조정자 인 것을 고려하지 않는 이유는 무엇입니까?