Files
mir_server/Gateway/srvlib/include/container/queue_list.h

59 lines
1.0 KiB
C
Raw Normal View History

2025-01-09 17:45:40 +08:00
#ifndef _MBASE_QUEUELIST_H_
#define _MBASE_QUEUELIST_H_
#include "lock_list.h"
#include "container/vector.h"
namespace container
{
template <typename T>
class QueueList :
public LockList<T>
{
public:
typedef LockList<T> Inherited;
typedef QueueList<T> ListClass;
private:
Vector<T> append_list_; //<2F><><EFBFBD><EFBFBD>׷<EFBFBD><D7B7><EFBFBD>б<EFBFBD>
public:
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD><EFBFBD>ݽ<EFBFBD><DDBD>ڵ<EFBFBD><DAB5><EFBFBD>flush<73><68>tryFlush<73>DZ<EFBFBD><C7B1><EFBFBD><E1BDBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD><D0B1><EFBFBD>
inline void append(const T& data)
{
this->lock();
append_list_.add(data);
this->unlock();
}
inline void appendList(Vector<T> &list)
{
this->lock();
append_list_.addArray(list, list.count());
this->unlock();
}
inline void appendArray(T* data, int length)
{
this->lock();
append_list_.addArray(data, length);
this->unlock();
}
//<2F><>ȡ׷<C8A1><D7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
inline int appendCount()
{
return append_list_.count();
}
//<2F><EFBFBD><E1BDBB>append<6E><64><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӵ<EFBFBD><D3B5><EFBFBD><EFBFBD><EFBFBD>
inline void flush()
{
this->lock();
if ( append_list_.count() > 0 )
{
this->addList(append_list_);
append_list_.trunc(0);
}
this->unlock();
}
};
};
#endif