#pragma once #include #include #include #include #include #include "MsgQueue.h" #include "CcosLock.h" #define LOW_REQUEST_SIZE (-1) class Packet_CB { public: Packet_CB() { m_Offset = 0; m_PacketSize = 0; }; Packet_CB(uint32_t offset, uint32_t size) { m_PacketSize = size; m_Offset = offset; }; ~Packet_CB() = default; uint32_t m_PacketSize; uint32_t m_Offset; }; class CircleBuff : public CcosLock { protected: char* m_pBuff; uint32_t m_TotalSize; uint32_t m_UsedSize; uint32_t m_BasePos; uint32_t m_HeadPos; uint32_t m_Limit; MsgQueue m_PacketQue; pthread_mutex_t m_Mutex; uint32_t PushBlock(const char* pContext, uint32_t Size); public: CircleBuff(); virtual ~CircleBuff(); bool ReSetBuffSize(uint32_t Size); void SetBuffMaxLimit(uint32_t limit); uint32_t Push(const char* pContext, uint32_t Size); int Pop(char* pContext, uint32_t ContextSize); uint32_t GetPacketCount(); uint32_t GetFrontPacketSize(); void Lock(); void Unlock(); };