From c270d033fa04873ee7a8925dbb00cae5edc4555c Mon Sep 17 00:00:00 2001 From: chai Date: Sat, 30 Mar 2019 11:59:35 +0800 Subject: *misc --- source/modules/asura-utils/io/data_buffer.h | 35 ++++++++++++++++++++++++----- 1 file changed, 30 insertions(+), 5 deletions(-) (limited to 'source/modules/asura-utils/io/data_buffer.h') diff --git a/source/modules/asura-utils/io/data_buffer.h b/source/modules/asura-utils/io/data_buffer.h index 445bdf4..61d158b 100644 --- a/source/modules/asura-utils/io/data_buffer.h +++ b/source/modules/asura-utils/io/data_buffer.h @@ -22,17 +22,33 @@ namespace AsuraEngine LUAX_DECL_FACTORY(DataBuffer); DataBuffer(DataBuffer& src); - DataBuffer(std::size_t size); + DataBuffer(std::size_t capacity); DataBuffer(const void* bytes, std::size_t size); ~DataBuffer(); byte* GetData(); size_t GetSize(); - - void Refactor(size_t size); - size_t Load(DataBuffer& db); - size_t Load(const void* bytes, std::size_t size); + size_t GetCapacity(); + + /// + /// 修改容量,并清空 + /// + void Refactor(size_t capacity); + + /// + /// 拷贝数据源到此缓冲 + /// + void Load(DataBuffer& db); + void Load(const void* bytes, std::size_t size); + + /// + /// 绑定bytes,并拥有所有权,capacity为size + /// void Move(void* bytes, std::size_t size); + + /// + /// 清理缓冲 + /// void Clear(); void Lock(); @@ -40,14 +56,23 @@ namespace AsuraEngine private: + /// + /// Buffer首地址和里面数据的长度 + /// byte* mBytes; size_t mSize; + /// + /// Buffer容量。 + /// + size_t mCapacity; + AEThreading::Mutex mMutex; LUAX_DECL_METHOD(_New); LUAX_DECL_METHOD(_GetData); LUAX_DECL_METHOD(_GetSize); + LUAX_DECL_METHOD(_GetCapacity); LUAX_DECL_METHOD(_Refactor); LUAX_DECL_METHOD(_Load); LUAX_DECL_METHOD(_Clear); -- cgit v1.1-26-g67d0