Skip to content

Commit 4c166a4

Browse files
committed
up
1 parent dfb529b commit 4c166a4

File tree

3 files changed

+31
-13
lines changed

3 files changed

+31
-13
lines changed

kbe/src/lib/cstdkbe/objectpool.hpp

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ along with KBEngine. If not, see <http://www.gnu.org/licenses/>.
3030
#include <map>
3131
#include <list>
3232
#include <vector>
33+
#include <queue>
3334

3435
#include "thread/threadmutex.hpp"
3536

@@ -213,6 +214,23 @@ class ObjectPool
213214
mutex_.unlockMutex();
214215
}
215216

217+
/**
218+
回收一个对象容器
219+
*/
220+
void reclaimObject(std::queue<T*>& objs)
221+
{
222+
mutex_.lockMutex();
223+
224+
while(!objs.empty())
225+
{
226+
T* t = objs.back();
227+
objs.pop();
228+
reclaimObject_(t);
229+
}
230+
231+
mutex_.unlockMutex();
232+
}
233+
216234
size_t size(void)const{ return obj_count_; }
217235

218236
std::string c_str()

kbe/src/lib/helper/debug_helper.cpp

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -268,13 +268,12 @@ void DebugHelper::clearBufferedLog(bool destroy)
268268

269269
if(destroy)
270270
{
271-
std::list< Mercury::Bundle* >::iterator iter = bufferedLogPackets_.begin();
272-
for(; iter != bufferedLogPackets_.end(); iter++)
271+
while(!bufferedLogPackets_.empty())
273272
{
274-
delete (*iter);
273+
Mercury::Bundle* pBundle = bufferedLogPackets_.back();
274+
bufferedLogPackets_.pop();
275+
delete pBundle;
275276
}
276-
277-
bufferedLogPackets_.clear();
278277
}
279278
else
280279
{
@@ -337,16 +336,17 @@ void DebugHelper::sync()
337336
uint32 i = 0;
338337
size_t totalLen = 0;
339338

340-
std::list< Mercury::Bundle* >::iterator iter = bufferedLogPackets_.begin();
341-
for(; iter != bufferedLogPackets_.end();)
339+
while(!bufferedLogPackets_.empty())
342340
{
343341
if(i++ >= g_kbeSrvConfig.tickMaxSyncLogs() || totalLen > (PACKET_MAX_SIZE_TCP * 10))
344342
break;
345343

346-
totalLen += (*iter)->currMsgLength();
347-
pMessagelogChannel->send((*iter));
344+
Mercury::Bundle* pBundle = bufferedLogPackets_.back();
345+
bufferedLogPackets_.pop();
346+
347+
totalLen += pBundle->currMsgLength();
348+
pMessagelogChannel->send(pBundle);
348349

349-
bufferedLogPackets_.erase(iter++);
350350
--hasBufferedLogPackets_;
351351
}
352352

@@ -439,7 +439,7 @@ void DebugHelper::onMessage(uint32 logType, const char * str, uint32 length)
439439
(*pBundle) << str;
440440

441441
++hasBufferedLogPackets_;
442-
bufferedLogPackets_.push_back(pBundle);
442+
bufferedLogPackets_.push(pBundle);
443443

444444
Mercury::g_trace_packet = v;
445445
g_pDebugHelperSyncHandler->startActiveTick();

kbe/src/lib/helper/debug_helper.hpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ along with KBEngine. If not, see <http://www.gnu.org/licenses/>.
2525
#include <assert.h>
2626
#include <time.h>
2727
#include <stdarg.h>
28-
#include <list>
28+
#include <queue>
2929
#if defined( __WIN32__ ) || defined( WIN32 ) || defined( _WIN32 )
3030
#pragma warning(disable:4819)
3131
#endif
@@ -178,7 +178,7 @@ class DebugHelper : public Singleton<DebugHelper>
178178
Mercury::Address messagelogAddr_;
179179
KBEngine::thread::ThreadMutex logMutex;
180180

181-
std::list< Mercury::Bundle* > bufferedLogPackets_;
181+
std::queue< Mercury::Bundle* > bufferedLogPackets_;
182182
size_t hasBufferedLogPackets_;
183183

184184
Mercury:: NetworkInterface* pNetworkInterface_;

0 commit comments

Comments
 (0)