XNSim/XNCore/XNTimeManager.h

114 lines
2.3 KiB
C
Raw Normal View History

2025-04-28 12:25:20 +08:00
/**
* @file XNTimeManager.h
* @author jinchao
* @brief
* @version 1.0
* @date 2024-11-10
*
* @copyright Copyright (c) 2024 XN
*
*/
#pragma once
#include "XNBaseFrameObject.h"
2025-05-20 15:39:40 +08:00
#include <chrono>
2025-04-28 12:25:20 +08:00
2025-05-20 15:39:40 +08:00
struct XNTimeManagerPrivate;
2025-04-28 12:25:20 +08:00
/**
* @brief
* @details 仿仿
*/
class XNCORE_EXPORT XNTimeManager : public XNBaseFrameObject
{
2025-05-20 15:39:40 +08:00
XN_METATYPE(XNTimeManager, XNBaseFrameObject)
XN_DECLARE_PRIVATE(XNTimeManager)
2025-04-28 12:25:20 +08:00
public:
/**
* @brief
*/
2025-05-20 15:39:40 +08:00
XNTimeManager();
2025-04-28 12:25:20 +08:00
/**
* @brief
*/
virtual ~XNTimeManager();
protected:
/**
* @brief
2025-05-20 15:39:40 +08:00
* @param p:
2025-04-28 12:25:20 +08:00
*/
2025-05-20 15:39:40 +08:00
XNTimeManager(PrivateType *p);
2025-04-28 12:25:20 +08:00
public:
/**
* @brief 仿
2025-05-20 15:39:40 +08:00
* @return std::chrono::system_clock::time_point: 仿
2025-04-28 12:25:20 +08:00
*/
2025-05-20 15:39:40 +08:00
XNTimePoint GetSimTime();
2025-04-28 12:25:20 +08:00
/**
* @brief 仿
2025-05-20 15:39:40 +08:00
* @param simTime: timespec类型仿
2025-04-28 12:25:20 +08:00
*/
2025-05-20 15:39:40 +08:00
void SetStartTime(const timespec &simTime);
2025-04-28 12:25:20 +08:00
/**
* @brief
* @details 线
*/
2025-05-20 15:39:40 +08:00
void Start();
2025-04-28 12:25:20 +08:00
/**
* @brief
* @details 线
*/
2025-05-20 15:39:40 +08:00
void Abort();
2025-04-28 12:25:20 +08:00
/**
* @brief
* @details 线
*/
2025-05-20 15:39:40 +08:00
void Pause();
2025-04-28 12:25:20 +08:00
/**
* @brief
* @details 线
*/
2025-05-20 15:39:40 +08:00
void Continue();
2025-04-28 12:25:20 +08:00
/**
* @brief
* @return true:
* @return false:
* @details
*/
2025-05-20 15:39:40 +08:00
virtual bool Initialize() override;
2025-04-28 12:25:20 +08:00
/**
* @brief 仿
* @note
*/
2025-05-20 15:39:40 +08:00
virtual bool PrepareForExecute() override;
2025-04-28 12:25:20 +08:00
/**
* @brief 仿
* @param objectId: ID
* @param cmd: 仿
*/
2025-05-20 15:39:40 +08:00
void SimControl(uint32_t objectId, SimControlCmd cmd);
2025-04-28 12:25:20 +08:00
/**
* @brief
* @return RunStatus: 线
* @details 线
*/
RunStatus GetStatus();
private:
/**
* @brief 线
*/
void StepExecute();
};