XNSim/XNCore/XNServiceObject.h

67 lines
2.1 KiB
C++
Executable File

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