어댑터 클래스 구현

이 태스크 정보

어댑터 클래스를 구현하기 위해, os.h 파일에 정의된 OXF 클래스에서 상속하고 이 클래스 각각에 대해 구현을 제공합니다. 다음 클래스를 구현해야 합니다.

구현된 클래스마다 <env> 접두부를 추가하는 것은 공통적인 관례입니다.

예를 들어, VxWorks에 대한 OMOSMutex 클래스를 다음과 같이 구현합니다.

프로시저

  1. 뮤텍스에 대한 OXF 클래스는 OMOSMutex이므로, OMOSMutex에서 상속하는 VxWorks 어댑터 클래스의 이름은 VxMutex입니다.
  2. 클래스에 대해 정의된 각 인터페이스 오퍼레이션을 구현하십시오. OMOSMutex 클래스는 다음과 같이 os.h에서 정의됩니다.

    class RP_FRAMEWORK_DLL OMOSMutex {
    OM_DECLARE_FRAMEWORK_MEMORY_ALLOCATION_OPERATORS
    public:
    virtual ~OMOSMutex(){};
    virtual void lock() = 0;
    virtual void unlock() = 0;
    virtual void* getOsHandle() const = 0;
    #ifndef OSE_DELTA
    // backward compatibility support for non-OSE
    // applications
    void free() {unlock();}
    #endif
    };
  3. 새 어댑터 클래스의 스펙을 VxOS.h에 놓으십시오.

    class VxMutex: public OMOSMutex {
    private:
    SEM_ID hMutex;
    public:
    void lock() {semTake(hMutex, WAIT_FOREVER);}
    void unlock() {semGive(hMutex);}
    VxMutex() {
    // hMutex = semBCreate(SEM_Q_FIFO, SEM_FULL);
    hMutex = semMCreate(SEM_Q_FIFO);
    }

    ~VxMutex() {semDelete(hMutex);}

    void* getHandle() {return (void *)hMutex;}
    virtual void* getOsHandle() const {return (void*)
    hMutex;}
    };

피드백