75 lines
2.2 KiB
C++
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; \
|
|
}
|