From 44360bc2cdeee16be72f9cc4bfb42e0ac26b5b44 Mon Sep 17 00:00:00 2001
From: chenluhua1980 <Chenluhua@qq.com>
Date: 星期一, 19 一月 2026 14:47:19 +0800
Subject: [PATCH] 1.修改优化

---
 SourceCode/Bond/Servo/CSlot.cpp |   60 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++---
 1 files changed, 57 insertions(+), 3 deletions(-)

diff --git a/SourceCode/Bond/Servo/CSlot.cpp b/SourceCode/Bond/Servo/CSlot.cpp
index 0a254cb..629f7ac 100644
--- a/SourceCode/Bond/Servo/CSlot.cpp
+++ b/SourceCode/Bond/Servo/CSlot.cpp
@@ -10,11 +10,17 @@
 		m_pContext = nullptr;
 		m_bEnable = FALSE;
 		m_bLock = FALSE;
+		m_pContext = nullptr;
+		m_pTempContext = nullptr;
+		m_nLinkSignalPath = 0;
 	}
 
 	CSlot::~CSlot()
 	{
-
+		if (m_pContext != nullptr) {
+			m_pContext->release();
+			m_pContext = nullptr;
+		}
 	}
 
 	BOOL CSlot::isEnable()
@@ -92,13 +98,61 @@
 		return m_pContext == nullptr;
 	}
 
+	void CSlot::setContext(CContext* pContext)
+	{
+		if (m_pContext != nullptr) {
+			m_pContext->release();
+		}
+
+		m_pContext = pContext;
+		if (m_pContext != nullptr) {
+			m_pContext->addRef();
+		}
+	}
+
 	CContext* CSlot::getContext()
 	{
 		return m_pContext;
 	}
 
-	void CSlot::setContext(CContext* pContext)
+	CContext* CSlot::getTempContext()
 	{
-		m_pContext = pContext;
+		return m_pTempContext;
+	}
+
+	void CSlot::setLinkSignalPath(int path)
+	{
+		m_nLinkSignalPath = path;
+	}
+
+	int CSlot::getLinkSignalPath()
+	{
+		return m_nLinkSignalPath;
+	}
+
+	void CSlot::serialize(CArchive& ar)
+	{
+		if (ar.IsStoring()) {
+			ar << (__int64)m_pContext;
+			ar << m_bLock;
+		}
+		else {
+			__int64 i64;
+			ar >> i64; m_pTempContext = (CContext*)i64;
+			ar >> m_bLock;
+		}
+	}
+
+	void CSlot::WriteString(CArchive& ar, std::string& string)
+	{
+		CString strTemp = string.c_str();
+		ar << strTemp;
+	}
+
+	void CSlot::ReadString(CArchive& ar, std::string& string)
+	{
+		CString strTemp;
+		ar >> strTemp;
+		string = (LPTSTR)(LPCTSTR)strTemp;
 	}
 }

--
Gitblit v1.9.3