1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 |
- #pragma once
- #include <map>
- #include <vector>
- #include <string>
- #include <cstdint>
- #include <pthread.h>
- #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<Packet_CB> 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();
- };
|