实施适配器类

关于此任务

要实施适配器类,从 OXF 继承 os.h 文件中定义的类并为这些类中的每一个提供实施。必须实施以下类:

在每个实施类上添加 <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;}
    };

反馈