mirror of
https://github.com/yuanyuanxiang/SimpleRemoter.git
synced 2026-01-21 23:13:08 +08:00
Improve: Reduce new / delete memory frequency in IOCPServer
This commit is contained in:
@@ -1,8 +1,8 @@
|
||||
#pragma once
|
||||
#pragma once
|
||||
#include <Windows.h>
|
||||
#include <string>
|
||||
|
||||
// Buffer <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ü<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ļ<EFBFBD><EFBFBD><EFBFBD>.
|
||||
// Buffer 带引用计数的缓存.
|
||||
class Buffer
|
||||
{
|
||||
private:
|
||||
@@ -82,7 +82,7 @@ public:
|
||||
~CBuffer(void);
|
||||
|
||||
ULONG ReadBuffer(PBYTE Buffer, ULONG ulLength);
|
||||
ULONG GetBufferLength(); // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч<EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><EFBFBD><EFBFBD>
|
||||
ULONG GetBufferLength(); // 返回有效数据长度
|
||||
ULONG GetBufferLen()
|
||||
{
|
||||
return GetBufferLength();
|
||||
@@ -104,11 +104,19 @@ public:
|
||||
ULONG RemoveCompletedBuffer(ULONG ulLength);
|
||||
std::string Skip(ULONG ulPos);
|
||||
|
||||
// 获取可直接写入的缓冲区指针,用于零拷贝接收
|
||||
// 返回可写入的起始地址,availableSize 返回可用空间大小
|
||||
LPBYTE GetWriteBuffer(ULONG requiredSize, ULONG& availableSize);
|
||||
// 确认写入完成,更新内部指针
|
||||
VOID CommitWrite(ULONG writtenSize);
|
||||
|
||||
protected:
|
||||
PBYTE m_Base;
|
||||
PBYTE m_Ptr;
|
||||
ULONG m_ulMaxLength;
|
||||
ULONG m_ulReadOffset; // 读取偏移,用于延迟数据移动
|
||||
CRITICAL_SECTION m_cs;
|
||||
ULONG DeAllocateBuffer(ULONG ulLength); // ˽<EFBFBD><EFBFBD>
|
||||
ULONG ReAllocateBuffer(ULONG ulLength); // ˽<EFBFBD><EFBFBD>
|
||||
ULONG DeAllocateBuffer(ULONG ulLength); // 私有
|
||||
ULONG ReAllocateBuffer(ULONG ulLength); // 私有
|
||||
VOID CompactBuffer(); // 压缩缓冲区,移除已读取数据
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user