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.cpp |   37 ++++++++++++++++++++++++++++++++++++-
 1 files changed, 36 insertions(+), 1 deletions(-)

diff --git a/SourceCode/Bond/Servo/CControlJob.cpp b/SourceCode/Bond/Servo/CControlJob.cpp
index be1b43a..cb1e794 100644
--- a/SourceCode/Bond/Servo/CControlJob.cpp
+++ b/SourceCode/Bond/Servo/CControlJob.cpp
@@ -38,6 +38,12 @@
         m_tEnd = src.m_tEnd;
     }
 
+    void CControlJob::setId(std::string& id)
+    {
+        m_cjId = trimCopy(id);
+        clampString(m_cjId, MAX_ID_LEN);
+    }
+
     bool CControlJob::addPJ(const std::string& pjId) {
         if (pjId.empty()) return false;
         auto id = pjId;
@@ -60,6 +66,28 @@
         return true;
     }
 
+    bool CControlJob::addPjPointer(CProcessJob* pj)
+    {
+        for (auto item : m_pjs) {
+            if (item->id().compare(pj->id()) == 0) return false;
+        }
+
+        m_pjs.push_back(pj);
+        return true;
+    }
+
+    bool CControlJob::removePjPointer(const std::string& id)
+    {
+        for(auto iter = m_pjs.begin(); iter != m_pjs.end(); ++iter) {
+            if ((*iter)->id().compare(id) == 0) {
+                m_pjs.erase(iter);
+                return true;
+            }
+        }
+
+        return false;
+    }
+
     bool CControlJob::removePJ(const std::string& pjId) {
         auto it = std::find(m_pjIds.begin(), m_pjIds.end(), pjId);
         if (it == m_pjIds.end()) return false;
@@ -74,6 +102,11 @@
     const std::vector<CControlJob::ValidationIssue>& CControlJob::issues()
     {
         return m_issues;
+    }
+
+    void CControlJob::clearIssues()
+    {
+        m_issues.clear();
     }
 
     bool CControlJob::validateForCreate(
@@ -187,9 +220,11 @@
         return true;
     }
 
-    bool CControlJob::abort() {
+    bool CControlJob::abort(std::string reason) {
         if (m_state == CJState::Completed || m_state == CJState::Aborted || m_state == CJState::Failed)
             return false;
+        m_failReason = trimCopy(reason);
+        clampString(m_failReason, 128);
         m_state = CJState::Aborted;
         markEnd();
         return true;

--
Gitblit v1.9.3