XNSim/XNCore_Win/XNServiceObject/XNServiceObject.h

75 lines
2.2 KiB
C++

#pragma once
#include "XNEventManager/XNEventManager.h"
#include "XNObject/XNObject.h"
#include "XNServiceManager/XNServiceManager.h"
namespace XNSim {
struct XNServiceObjectPrivate;
class XNServiceObject : public XNObject {
XN_METATYPE(XNServiceObject, XNObject)
XN_DECLARE_PRIVATE(XNServiceObject)
public:
XNServiceObject();
virtual ~XNServiceObject();
protected:
XNServiceObject(PrivateType *p);
public:
const XN_STRING &GetVersion();
const XN_STRING &GetDescription();
const XN_STRING &GetAuthor();
const XN_STRING &GetXmlPath();
const XNTimePoint &GetCreateTime();
const XNTimePoint &GetChangeTime();
void SetVersion(const XN_STRING &version);
void SetDescription(const XN_STRING &description);
void SetAuthor(const XN_STRING &author);
void SetXmlPath(const XN_STRING &xmlPath);
void SetCreateTime(const XNTimePoint &createTime);
void SetChangeTime(const XNTimePoint &changeTime);
XN_INT32
RegisterEventHandler(const XN_STRING &eventName, XNEventCallback callback,
bool async = false,
XNEvent::Priority priority = XNEvent::Priority::Normal);
void TriggerEvent(const XN_STRING &eventName,
const XN_ANY &eventData = XN_ANY(), bool forceAsync = false,
XNEvent::Priority priority = XNEvent::Priority::Normal);
XN_INT32 RegisterRTEventHandler(const XN_STRING &eventName,
XNEventCallback callback);
void TriggerRTEvent(const XN_STRING &eventName,
const XN_ANY &eventData = XN_ANY());
void SetInitializeType(XN_UINT32 initialType);
virtual void Initialize();
virtual void PrepareForExecute();
virtual void RegisterDDSParticipant();
void SetFramework(XNFrameworkPtr framework);
protected:
XNFrameworkPtr GetFramework() const;
private:
void ParseXml();
void ParseConfig();
};
XNCLASS_PTR_DECLARE(XNServiceObject)
} // namespace XNSim
#define XN_SERVICE_INITIALIZE(ClassName) \
extern "C" XNSim::XNServiceObjectPtr Initial##ClassName() { \
XNSim::ClassName##Ptr obj = std::make_shared<XNSim::ClassName>(); \
return obj; \
}