1#ifndef NEFORCE_CORE_ASYNC_BUFFER_HPP__
2#define NEFORCE_CORE_ASYNC_BUFFER_HPP__
13NEFORCE_BEGIN_NAMESPACE__
75 NEFORCE_NODISCARD
size_t size() const noexcept {
return buffers_.size(); }
81 NEFORCE_NODISCARD
bool empty() const noexcept {
return buffers_.empty(); }
107 NEFORCE_NODISCARD
iterator end() noexcept {
return buffers_.end(); }
162 NEFORCE_NODISCARD
size_t size() const noexcept {
return buffers_.size(); }
168 NEFORCE_NODISCARD
bool empty() const noexcept {
return buffers_.empty(); }
194 NEFORCE_NODISCARD
iterator end() noexcept {
return buffers_.end(); }
231 size_t write_pos_{0};
245 if (data_.size() - write_pos_ < n) {
246 data_.resize(write_pos_ + n);
260 void commit(
size_t n) { write_pos_ += n; }
270 if (n >= write_pos_) {
274 const size_t remaining = write_pos_ - n;
275 memory_move(data_.data(), data_.data() + n, remaining);
276 write_pos_ = remaining;
283 NEFORCE_NODISCARD
size_t size() const noexcept {
return write_pos_; }
289 NEFORCE_NODISCARD
const char*
data() const noexcept {
return data_.data(); }
295 NEFORCE_NODISCARD
char*
data() noexcept {
return data_.data(); }
301 NEFORCE_NODISCARD
size_t capacity() const noexcept {
return data_.size(); }
312NEFORCE_END_NAMESPACE__
void push_back(const_buffer b)
添加缓冲区到序列末尾
const_buffers()=default
默认构造函数
const const_buffer & operator[](size_t i) const
访问指定索引的缓冲区
iterator begin() noexcept
获取起始迭代器
const_buffer value_type
元素类型
const_iterator begin() const noexcept
获取起始常量迭代器
iterator end() noexcept
获取结束迭代器
const_buffer & operator[](size_t i)
访问指定索引的缓冲区(可修改)
bool empty() const noexcept
检查序列是否为空
const_iterator end() const noexcept
获取结束常量迭代器
size_t size() const noexcept
获取缓冲区的数量
vector< const_buffer >::const_iterator const_iterator
常量迭代器类型
vector< const_buffer >::iterator iterator
迭代器类型
const_buffers(const_buffer b)
从单个 buffer 构造
size_t max_size() const noexcept
最大允许大小
mutable_buffers prepare(size_t n)
准备写入区域
char * data() noexcept
获取可写数据的原始指针
const char * data() const noexcept
获取可读数据的原始指针
size_t size() const noexcept
当前可读数据大小
size_t capacity() const noexcept
内部缓冲区容量
void commit(size_t n)
标记已写入的字节数
void consume(size_t n)
移除已消费的数据
可变缓冲区序列(scatter-gather 读)
mutable_buffers()=default
默认构造函数
const_iterator begin() const noexcept
获取起始常量迭代器
iterator begin() noexcept
获取起始迭代器
const_iterator end() const noexcept
获取结束常量迭代器
size_t size() const noexcept
获取缓冲区的数量
vector< mutable_buffer >::const_iterator const_iterator
常量迭代器类型
mutable_buffer & operator[](size_t i)
访问指定索引的缓冲区(可修改)
mutable_buffers(mutable_buffer b)
从单个 buffer 构造
mutable_buffer value_type
元素类型
void push_back(mutable_buffer b)
添加缓冲区到序列末尾
bool empty() const noexcept
检查序列是否为空
iterator end() noexcept
获取结束迭代器
vector< mutable_buffer >::iterator iterator
迭代器类型
const mutable_buffer & operator[](size_t i) const
访问指定索引的缓冲区
static constexpr T max() noexcept
获取类型的最大值
vector_iterator< false, vector< T, Alloc > > iterator
迭代器类型
vector_iterator< true, vector< T, Alloc > > const_iterator
常量迭代器类型
memory_view< const char > const_buffer
常量缓冲区(用于异步写入操作)
memory_view< char > mutable_buffer
可变缓冲区(用于异步读取操作)
constexpr void * memory_move(void *dest, const void *src, size_t count) noexcept
从源内存移动数据到目标内存