From f631abac11b6d7c8091ed28b838a5d1f50e24825 Mon Sep 17 00:00:00 2001
From: LAPTOP-SNT8I5JK\Boounion <Chenluhua@qq.com>
Date: 星期三, 19 三月 2025 18:03:37 +0800
Subject: [PATCH] 1.把CSample替换为CIntent

---
 SourceCode/Bond/Servo/Context.cpp |  132 ++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 132 insertions(+), 0 deletions(-)

diff --git a/SourceCode/Bond/Servo/Context.cpp b/SourceCode/Bond/Servo/Context.cpp
index 7fb9d06..fad62bc 100644
--- a/SourceCode/Bond/Servo/Context.cpp
+++ b/SourceCode/Bond/Servo/Context.cpp
@@ -4,9 +4,141 @@
 
 CContext::CContext()
 {
+	m_nRef = 0;
+	m_nRetCode = CRC_UNKNOWN;
+	m_hEvent = ::CreateEvent(NULL, TRUE, FALSE, NULL);
+	InitializeCriticalSection(&m_criticalSection);
 }
 
 
 CContext::~CContext()
 {
+	if (m_hEvent != NULL) {
+		CloseHandle(m_hEvent);
+		m_hEvent = NULL;
+	}
+	DeleteCriticalSection(&m_criticalSection);
 }
+
+int CContext::addRef()
+{
+	Lock();
+	m_nRef++;
+	Unlock();
+
+	return m_nRef;
+}
+
+int CContext::release()
+{
+	Lock();
+	m_nRef--;
+	BOOL bDelete = m_nRef == 0;
+	Unlock();
+
+	int nRef = m_nRef;;
+	if (bDelete) delete this;
+	return nRef;
+}
+
+void CContext::setRetCode(int code)
+{
+	m_nRetCode = code;
+}
+
+int CContext::getRetCode()
+{
+	return m_nRetCode;
+}
+
+void CContext::setRetMsg(const char* pszMsg)
+{
+	m_strRetMsg = pszMsg;
+}
+
+std::string& CContext::getRetMsg()
+{
+	return m_strRetMsg;
+}
+
+HANDLE CContext::getEventHandle()
+{
+	return m_hEvent;
+}
+
+void CContext::setEvent()
+{
+	if (m_hEvent != NULL) {
+		SetEvent(m_hEvent);
+	}
+}
+
+void CContext::resetEvent()
+{
+	if (m_hEvent != NULL) {
+		ResetEvent(m_hEvent);
+	}
+}
+
+void CContext::ReadString(CArchive& ar, std::string& string)
+{
+	CString strTemp;
+	ar >> strTemp;
+	string = (LPTSTR)(LPCTSTR)strTemp;
+}
+
+void CContext::WriteString(CArchive& ar, std::string& string)
+{
+	CString strTemp = string.c_str();
+	ar << strTemp;
+}
+
+void CContext::createDir(CString strDir)
+{
+	int lastIndex = 0;
+	int index = strDir.Find(_T("\\"), lastIndex);
+	while (index > 0) {
+		CString strTempDir = strDir.Left(index);
+		CreateDirectory(strTempDir, NULL);
+
+		lastIndex = index + 1;
+		index = strDir.Find(_T("\\"), lastIndex);
+	}
+	CreateDirectory(strDir, NULL);
+}
+
+BOOL CContext::IsBoxId(CString& strId)
+{
+	//'W20'开头,倒数第五位为'Z'的字符串
+	if (strId.GetLength() < 8) {
+		return FALSE;
+	}
+
+	if (strId.Left(3).Compare(_T("W20")) != 0) {
+		return FALSE;
+	}
+
+	if (strId.Right(5).GetAt(0) != (char)'Z') {
+		return FALSE;
+	}
+
+	return TRUE;
+}
+
+BOOL CContext::IsLotId(CString& strId)
+{
+	//'N20'开头,倒数第五位为'Z'的字符串
+	if (strId.GetLength() < 8) {
+		return FALSE;
+	}
+
+	if (strId.Left(3).Compare(_T("N20")) != 0) {
+		return FALSE;
+	}
+
+	if (strId.Right(5).GetAt(0) != (char)'Z') {
+		return FALSE;
+	}
+
+	return TRUE;
+}
\ No newline at end of file

--
Gitblit v1.9.3