實作配接器類別

關於這項作業

若要實作配接器類別,請繼承自 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;}
    };

回饋