8#ifndef MFRAME_BA359EBF_505B_445E_8A31_2AB82A22FEB8
9#define MFRAME_BA359EBF_505B_445E_8A31_2AB82A22FEB8
18#include "./../io/Buffer.h"
19#include "./../lang/Memory.h"
52 volatile uint32 vCount;
53 volatile uint32 vHead;
54 volatile uint32 vTail;
93 :
RingBuffer(ufm::lang::Memory(pointer, length)) {
174 virtual int poll(
void* pointer,
int length)
override;
196 virtual const char*
elementAt(
int index)
const override;
239 virtual int putByte(
const char data)
override;
260 virtual int put(
const void* pointer,
int length)
override;
270 return static_cast<int>(RingBuffer::vCount);
277 return static_cast<int>((this->vHead & (this->vCount - 1)));
284 return static_cast<int>((this->vTail & (this->vCount - 1)));
293 return this->vMemory;
環形緩衝器實現,支援循環式讀寫操作
Definition RingBuffer.h:46
int getTailPosi(void) const
取得緩衝器中尾部索引位置(模擬環形結構)
Definition RingBuffer.h:283
virtual int put(const void *pointer, int length) override
從記憶體指標附加資料至緩衝區
virtual ufm::util::Iterator< const char > begin(void) override
返回一個迭代器,用於遍歷集合中的元素
virtual int nextIndex(int index) const override
返回當前索引的下一個有效索引。
virtual int remaining(void) const override
取得緩衝區剩餘空閒字節數。
RingBuffer(void *pointer, int length)
使用指定指標和長度建立環形緩衝器
Definition RingBuffer.h:92
RingBuffer(ufm::lang::Memory memory) noexcept
使用指定記憶體建立環形緩衝器
virtual ufm::util::Iterator< const char > end(void) override
返回一個迭代器,用於遍歷集合的結尾
ufm::lang::Memory & getMemory(void)
取得環形緩衝器的記憶體空間
Definition RingBuffer.h:292
virtual const char * elementAt(int index) const override
獲取集合中指定索引處的元素。
int getSize(void)
取得環形緩衝器的總大小(以位元組計算)
Definition RingBuffer.h:269
virtual int pollByte(char &result) override
讀取一個字節並將其從緩衝區移除
virtual void forEach(ufm::func::Consumer< const char & > &action) override
遍歷集合中所有元素,對每個元素執行指定操作。 若所有元素處理完畢或操作中發生異常則停止。
RingBuffer(int length)
使用指定長度建立環形緩衝器
Definition RingBuffer.h:80
virtual int poll(ufm::lang::Appendable &appendable) override
從緩衝區讀取資料並寫入到Appendable物件中
virtual ~RingBuffer(void) override
釋放環形緩衝器資源
int getHeadPosi(void) const
取得緩衝器中頭部索引位置(模擬環形結構)
Definition RingBuffer.h:276
virtual ufm::lang::Readable & getReadable(void) override
取得緩衝區的可讀取介面
virtual int avariable(void) const override
取得可讀取的資料數量
virtual int putByte(const char data) override
輸入單一字節至緩衝區
virtual int put(ufm::lang::Readable &readable) override
從 Readable 物件附加資料至緩衝區
virtual void clear(void) override
清空緩衝區內容
virtual int poll(void *pointer, int length) override
從緩衝區讀取指定長度的資料到指定的記憶體位置
virtual ufm::lang::Appendable & getAppendable(void) override
取得緩衝區的可寫入介面
存儲資料的類別,提供動態記憶體管理功能。
Definition Memory.h:44
物件基底類別
Definition Object.h:63
[Class] 迭代器介面
Definition Iterator.h:42
[Interface] 消費者函數式介面模板
Definition Consumer.h:43
[Interface] 緩衝區基礎介面,定義資料存取的核心功能
Definition Buffer.h:41
資料附加介面 (Appendable)
Definition Appendable.h:43
[Interface] 定義資料讀取介面
Definition Readable.h:46