Files
wnmj/Servers/服务器组件/服务核心/WHDataQueue.h

90 lines
1.9 KiB
C
Raw Normal View History

2026-02-13 14:34:15 +08:00
#ifndef WH_DATA_QUEUE_HEAD_FILE
#define WH_DATA_QUEUE_HEAD_FILE
#pragma once
#include "ServiceCoreHead.h"
//////////////////////////////////////////////////////////////////////////////////
//<2F><EFBFBD><E1B9B9><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ
struct tagDataHead
{
WORD wDataSize; //<2F><><EFBFBD>ݴ<EFBFBD>С
WORD wIdentifier; //<2F><><EFBFBD>ͱ<EFBFBD>ʶ
};
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
struct tagBurthenInfo
{
DWORD dwDataSize; //<2F><><EFBFBD>ݴ<EFBFBD>С
DWORD dwBufferSize; //<2F><><EFBFBD><EFBFBD><E5B3A4>
DWORD dwDataPacketCount; //<2F><><EFBFBD>ݰ<EFBFBD><DDB0><EFBFBD>
};
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
struct tagDataBuffer
{
WORD wDataSize; //<2F><><EFBFBD>ݴ<EFBFBD>С
LPVOID pDataBuffer; //<2F><><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>
};
//////////////////////////////////////////////////////////////////////////////////
//<2F><><EFBFBD>ݶ<EFBFBD><DDB6><EFBFBD>
class SERVICE_CORE_CLASS CWHDataQueue
{
//<2F><>ѯ<EFBFBD><D1AF><EFBFBD><EFBFBD>
protected:
DWORD m_dwInsertPos; //<2F><><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>
DWORD m_dwTerminalPos; //<2F><><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>
DWORD m_dwDataQueryPos; //<2F><>ѯλ<D1AF><CEBB>
//<2F><><EFBFBD>ݱ<EFBFBD><DDB1><EFBFBD>
protected:
DWORD m_dwDataSize; //<2F><><EFBFBD>ݴ<EFBFBD>С
DWORD m_dwDataPacketCount; //<2F><><EFBFBD>ݰ<EFBFBD><DDB0><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
protected:
DWORD m_dwBufferSize; //<2F><><EFBFBD><EFBFBD><E5B3A4>
LPBYTE m_pDataQueueBuffer; //<2F><><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
public:
//<2F><><EFBFBD><EFBFBD><ECBAAF>
CWHDataQueue();
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
virtual ~CWHDataQueue();
//<2F><><EFBFBD>ܺ<EFBFBD><DCBA><EFBFBD>
public:
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
VOID GetBurthenInfo(tagBurthenInfo & BurthenInfo);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
DWORD GetDataPacketCount() { return m_dwDataPacketCount; }
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
public:
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
bool InsertData(WORD wIdentifier, VOID * pBuffer, WORD wDataSize);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
bool InsertData(WORD wIdentifier, tagDataBuffer DataBuffer[], WORD wDataCount);
//<2F><><EFBFBD>ݹ<EFBFBD><DDB9><EFBFBD>
public:
//ɾ<><C9BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
VOID RemoveData(bool bFreeMemroy);
//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>
bool DistillData(tagDataHead & DataHead, VOID * pBuffer, WORD wBufferSize);
//<2F>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD><EFBFBD>
private:
//<2F><><EFBFBD><EFBFBD><EFBFBD>
bool RectifyBuffer(DWORD dwNeedSize);
};
//////////////////////////////////////////////////////////////////////////////////
#endif