#ifndef IVMODULE_H
#define IVMODULE_H

#include <thread>

#include "modulecomm.h"

namespace  iv {

class ivmodule
{
public:
    ivmodule();
    ~ivmodule();

public:
    void start();
    virtual void modulerun();
    void setmodulename(const char * strmodulename);
#ifdef  USE_PLUS_MODULECOMM
    void setdefaultcommtype(iv::modulecomm::ModuleComm_TYPE xtype);
    iv::modulecomm::ModuleComm_TYPE getdefefaultcommtype();
#endif

public:

public:
    bool mbrun = true;
private:
    std::thread * mpthread;
#ifdef USE_PLUS_MODULECOMM
#ifdef MODULECOMM_DEFAULT_USE_INTER
    iv::modulecomm::ModuleComm_TYPE mdefcommtype = iv::modulecomm::ModuleComm_INTERIOR;
#else
#ifdef MODULECOMM_DEFAULT_USE_FASTRTPS
    iv::modulecomm::ModuleComm_TYPE mdefcommtype = iv::modulecomm::ModuleComm_FASTRTPS;
#else
    iv::modulecomm::ModuleComm_TYPE mdefcommtype = iv::modulecomm::ModuleComm_SHAREMEM;
#endif
#endif

#endif
    char mstrmodulename[256];
};
}

#endif // IVMODULE_H