From e8a27bb203fe2aff70390a5eca002d7438da9b0f Mon Sep 17 00:00:00 2001
From: mrDarker <mr.darker@163.com>
Date: 星期三, 22 十月 2025 14:24:34 +0800
Subject: [PATCH] Merge branch 'clh' into liuyang
---
SourceCode/Bond/Servo/CControlJob.h | 19 ++++++++++++++++---
1 files changed, 16 insertions(+), 3 deletions(-)
diff --git a/SourceCode/Bond/Servo/CControlJob.h b/SourceCode/Bond/Servo/CControlJob.h
index a9611a4..1c391e1 100644
--- a/SourceCode/Bond/Servo/CControlJob.h
+++ b/SourceCode/Bond/Servo/CControlJob.h
@@ -36,14 +36,17 @@
/// CControlJob:Control Job 管理类
class CControlJob {
public:
+ CControlJob();
explicit CControlJob(std::string cjId);
explicit CControlJob(CControlJob& src);
// —— 基本属性 —— //
const std::string& id() const noexcept { return m_cjId; }
+ void setId(std::string& id);
CJState state() const noexcept { return m_state; }
uint8_t priority() const noexcept { return m_priority; }
void setPriority(uint8_t p) noexcept { m_priority = p; }
+ std::string getStateText();
// —— PJ 列表维护(去重)—— //
bool addPJ(const std::string& pjId); // 已存在则不重复添加
@@ -52,7 +55,10 @@
bool containsPJ(const std::string& pjId) const;
const std::vector<std::string>& pjIds() const noexcept { return m_pjIds; }
bool setPJs(const std::vector<CProcessJob*>& pjs);
+ bool removePjPointer(const std::string& id);
+ bool addPjPointer(CProcessJob* pj);
void clearPJs() { m_pjIds.clear(); }
+ const std::vector<CProcessJob*>& getPjs() { return m_pjs; };
// —— 校验 —— //
struct ValidationIssue { uint32_t code; std::string text; };
@@ -65,7 +71,8 @@
const std::function<bool(const std::string&)>& getPjExistsFn,
const std::function<bool(const std::string&)>& canJoinFn
);
- const std::vector<CControlJob::ValidationIssue>& CControlJob::issues();
+ const std::vector<ValidationIssue>& CControlJob::issues();
+ void clearIssues();
// —— S14F9 → S14F10 的“应用结果”模型 —— //
struct CreateRequest {
@@ -92,7 +99,7 @@
bool pause(); // Executing -> Paused
bool resume(); // Paused -> Executing
bool complete(); // Executing/Paused -> Completed
- bool abort(); // 非终态 -> Aborted
+ bool abort(std::string reason); // 非终态 -> Aborted
bool fail(std::string reason); // 任意 -> Failed
const std::string& failReason() const noexcept { return m_failReason; }
@@ -111,12 +118,18 @@
static void clampString(std::string& s, size_t maxLen);
static bool asciiPrintable(const std::string& s);
+ static constexpr uint32_t CJ_MAGIC = 0x434A5031; // "CJP1"
+ static constexpr uint16_t CJ_VERSION = 0x0001;
+
+ void serialize(std::ostream& os) const;
+ static bool deserialize(std::istream& is, CControlJob& out, std::string* err = nullptr);
+
private:
void markQueued();
void markStart();
void markEnd();
- private:
+ protected:
// —— 标识 & 配置 —— //
std::string m_cjId;
uint8_t m_priority{ 5 }; // 缺省优先级(自定)
--
Gitblit v1.9.3