File tree Expand file tree Collapse file tree 3 files changed +35
-10
lines changed
MQCore_DBModule/DBModule_MQData
MQCore_MemoryCache/MemoryCache_DBData Expand file tree Collapse file tree 3 files changed +35
-10
lines changed Original file line number Diff line number Diff line change @@ -602,6 +602,15 @@ bool CDBModule_MQData::DBModule_MQData_DeleteTable(LPCXSTR lpszQueueName)
602602 DBModule_dwErrorCode = DataBase_GetLastError ();
603603 return false ;
604604 }
605+
606+ if (m_bMemoryCache)
607+ {
608+ XENGINE_DBMESSAGEQUEUE st_MessageQueue = {};
609+
610+ st_MessageQueue.nQueueSerial = -1 ;
611+ _tcsxcpy (st_MessageQueue.tszQueueName , lpszQueueName);
612+ MemoryCache_DBData_DataDelete (&st_MessageQueue);
613+ }
605614 return true ;
606615}
607616/* *******************************************************************
Original file line number Diff line number Diff line change @@ -184,18 +184,35 @@ bool CMemoryCache_DBData::MemoryCache_DBData_DataDelete(XENGINE_DBMESSAGEQUEUE*
184184 return false ;
185185 }
186186
187- std::tuple<__int64x, std::string> stl_Key (pSt_DBMessageInfo->nQueueSerial , pSt_DBMessageInfo->tszQueueName );
188-
189187 st_LockerQuery.lock ();
190- auto stl_MapIterator = stl_MapQuery.find (stl_Key);
191- if (stl_MapIterator == stl_MapQuery.end ())
188+ if (-1 == pSt_DBMessageInfo->nQueueSerial )
192189 {
193- MemoryCache_IsErrorOccur = true ;
194- MemoryCache_dwErrorCode = ERROR_XENGINE_MQCORE_MEMORYCACHE_DBDATA_NOTFOUND;
195- st_LockerQuery.unlock ();
196- return false ;
190+ for (auto stl_MapIterator = stl_MapQuery.begin (); stl_MapIterator != stl_MapQuery.end (); )
191+ {
192+ if (std::get<1 >((stl_MapIterator->first )) == pSt_DBMessageInfo->tszQueueName )
193+ {
194+ stl_MapIterator = stl_MapQuery.erase (stl_MapIterator);
195+ }
196+ else
197+ {
198+ stl_MapIterator++;
199+ }
200+ }
201+ }
202+ else
203+ {
204+ std::tuple<__int64x, std::string> stl_Key (pSt_DBMessageInfo->nQueueSerial , pSt_DBMessageInfo->tszQueueName );
205+
206+ auto stl_MapIterator = stl_MapQuery.find (stl_Key);
207+ if (stl_MapIterator == stl_MapQuery.end ())
208+ {
209+ MemoryCache_IsErrorOccur = true ;
210+ MemoryCache_dwErrorCode = ERROR_XENGINE_MQCORE_MEMORYCACHE_DBDATA_NOTFOUND;
211+ st_LockerQuery.unlock ();
212+ return false ;
213+ }
214+ stl_MapQuery.erase (stl_Key);
197215 }
198- stl_MapQuery.erase (stl_Key);
199216 st_LockerQuery.unlock ();
200217 return true ;
201218}
Original file line number Diff line number Diff line change @@ -24,7 +24,6 @@ struct TupleHash
2424 {
2525 return std::apply ([](auto &&... args)
2626 {
27- // 使用std::hash对每个元素分别哈希并组合结果
2827 std::size_t seed = 0 ;
2928 ((seed ^= std::hash<std::decay_t <decltype (args)>>()(args) + 0x9e3779b9 + (seed << 6 ) + (seed >> 2 )), ...);
3029 return seed;
You can’t perform that action at this time.
0 commit comments