LAPTOP-SNT8I5JK\Boounion
2025-06-24 d1aa8faa0632de2dafb7d081a3a93a3c2d4f8962
SourceCode/Bond/Servo/CRecipesManager.cpp
@@ -20,6 +20,7 @@
      m_hWorkStop = nullptr;
      m_hWorkThreadHandle = nullptr;
      m_nTimeoutCount = 0;
      m_onSyncingStateChanged = nullptr;
      ::InitializeCriticalSection(&m_cs);
   }
@@ -62,6 +63,9 @@
      m_nTimeoutCount = 0;
      unlock();
      if (m_onSyncingStateChanged != nullptr) {
         m_onSyncingStateChanged(m_nSyncStatus);
      }
      if (m_hWorkStop == nullptr) {
         m_hWorkStop = ::CreateEvent(NULL, TRUE, FALSE, NULL);
@@ -78,6 +82,11 @@
      m_nSyncStatus = SS_FAILED;
      m_nTimeoutCount = 0;
      unlock();
      if (m_onSyncingStateChanged != nullptr) {
         m_onSyncingStateChanged(m_nSyncStatus);
      }
   }
   short CRecipesManager::decodeRecipeListReport(const char* pszData, size_t size)
@@ -144,17 +153,19 @@
         int nRet = pRecipeList->addRecipePacket(toatlGroupCount, currentGroupCount, pszIdsData, 250 * 2);
         if (MRLRC_CURRENT_RECIPE_COMPLETE == nRet) {
            lock();
            if (m_nTotalMasterRecipeCount == m_mapRecipesTemp.size()) {
               for (auto item : m_mapRecipes) {
                  delete item.second;
               }
               m_mapRecipes = m_mapRecipesTemp;
               m_mapRecipesTemp.clear();
               m_nSyncStatus = SS_COMPLETE;
               unlock();
               return MRLRC_OK;
            for (auto item : m_mapRecipes) {
               delete item.second;
            }
            m_mapRecipes = m_mapRecipesTemp;
            m_mapRecipesTemp.clear();
            m_nSyncStatus = SS_COMPLETE;
            unlock();
            if (m_onSyncingStateChanged != nullptr) {
               m_onSyncingStateChanged(m_nSyncStatus);
            }
            return MRLRC_OK;
         }
         else if (MRLRC_CONTINUE == nRet) {
            return MRLRC_CONTINUE;
@@ -268,6 +279,18 @@
      return iter->second;
   }
   CRecipeList* CRecipesManager::getRecipeList(int unitNo)
   {
      auto iter = m_mapRecipes.find(unitNo);
      if (iter == m_mapRecipes.end()) return nullptr;
      return iter->second;
   }
   void CRecipesManager::setOnSyncingStateChanged(ONSYNCINGSTATECHANGED block)
   {
      m_onSyncingStateChanged = block;
   }
   unsigned CRecipesManager::TimeoutCheckWorkingProc()
   {
      while (1) {