Skip to content

Commit 0758b3d

Browse files
committed
modify:delete table to clear cache supported
1 parent 53e304f commit 0758b3d

File tree

3 files changed

+35
-10
lines changed

3 files changed

+35
-10
lines changed

XEngine_Source/MQCore_DBModule/DBModule_MQData/DBModule_MQData.cpp

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff 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
/********************************************************************

XEngine_Source/MQCore_MemoryCache/MemoryCache_DBData/MemoryCache_DBData.cpp

Lines changed: 26 additions & 9 deletions
Original file line numberDiff line numberDiff 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
}

XEngine_Source/MQCore_MemoryCache/MemoryCache_DBData/MemoryCache_DBData.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff 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;

0 commit comments

Comments
 (0)