Files
2026-03-03 13:56:44 +08:00

90 lines
1.9 KiB
C++

#ifndef WH_DATA_QUEUE_HEAD_FILE
#define WH_DATA_QUEUE_HEAD_FILE
#pragma once
#include "ServiceCoreHead.h"
//////////////////////////////////////////////////////////////////////////////////
//结构定义
//数据列头
struct tagDataHead
{
WORD wDataSize; //数据大小
WORD wIdentifier; //类型标识
};
//负荷信息
struct tagBurthenInfo
{
DWORD dwDataSize; //数据大小
DWORD dwBufferSize; //缓冲长度
DWORD dwDataPacketCount; //数据包数
};
//数据信息
struct tagDataBuffer
{
WORD wDataSize; //数据大小
LPVOID pDataBuffer; //数据指针
};
//////////////////////////////////////////////////////////////////////////////////
//数据队列
class SERVICE_CORE_CLASS CWHDataQueue
{
//查询变量
protected:
DWORD m_dwInsertPos; //插入位置
DWORD m_dwTerminalPos; //结束位置
DWORD m_dwDataQueryPos; //查询位置
//数据变量
protected:
DWORD m_dwDataSize; //数据大小
DWORD m_dwDataPacketCount; //数据包数
//缓冲变量
protected:
DWORD m_dwBufferSize; //缓冲长度
LPBYTE m_pDataQueueBuffer; //缓冲指针
//函数定义
public:
//构造函数
CWHDataQueue();
//析构函数
virtual ~CWHDataQueue();
//功能函数
public:
//负荷信息
VOID GetBurthenInfo(tagBurthenInfo & BurthenInfo);
//数据信息
DWORD GetDataPacketCount() { return m_dwDataPacketCount; }
//插入数据
public:
//插入数据
bool InsertData(WORD wIdentifier, VOID * pBuffer, WORD wDataSize);
//插入数据
bool InsertData(WORD wIdentifier, tagDataBuffer DataBuffer[], WORD wDataCount);
//数据管理
public:
//删除数据
VOID RemoveData(bool bFreeMemroy);
//提取数据
bool DistillData(tagDataHead & DataHead, VOID * pBuffer, WORD wBufferSize);
//内部函数
private:
//调整存储
bool RectifyBuffer(DWORD dwNeedSize);
};
//////////////////////////////////////////////////////////////////////////////////
#endif