LAPTOP-SNT8I5JK\Boounion
2025-03-26 8942dacbc2bfaf8aec6a360671de20b0fbf32273
SourceCode/Bond/Servo/Context.cpp
@@ -4,9 +4,141 @@
CContext::CContext()
{
   m_nRef = 0;
   m_nRetCode = 0;
   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;
}