![]() |
mFrame
|
環形緩衝器實現,支援循環式讀寫操作 更多...
#include <RingBuffer.h>
公開方法(Public Methods) | |
RingBuffer (ufm::lang::Memory memory) noexcept | |
使用指定記憶體建立環形緩衝器 | |
RingBuffer (int length) | |
使用指定長度建立環形緩衝器 | |
RingBuffer (void *pointer, int length) | |
使用指定指標和長度建立環形緩衝器 | |
virtual | ~RingBuffer (void) override |
釋放環形緩衝器資源 | |
virtual void | clear (void) override |
清空緩衝區內容 | |
virtual ufm::lang::Readable & | getReadable (void) override |
取得緩衝區的可讀取介面 | |
virtual ufm::lang::Appendable & | getAppendable (void) override |
取得緩衝區的可寫入介面 | |
virtual int | avariable (void) const override |
取得可讀取的資料數量 | |
virtual int | pollByte (char &result) override |
讀取一個字節並將其從緩衝區移除 | |
virtual int | poll (ufm::lang::Appendable &appendable) override |
從緩衝區讀取資料並寫入到Appendable物件中 | |
virtual int | poll (void *pointer, int length) override |
從緩衝區讀取指定長度的資料到指定的記憶體位置 | |
virtual void | forEach (ufm::func::Consumer< const char & > &action) override |
遍歷集合中所有元素,對每個元素執行指定操作。 若所有元素處理完畢或操作中發生異常則停止。 | |
virtual const char * | elementAt (int index) const override |
獲取集合中指定索引處的元素。 | |
virtual int | nextIndex (int index) const override |
返回當前索引的下一個有效索引。 | |
virtual ufm::util::Iterator< const char > | begin (void) override |
返回一個迭代器,用於遍歷集合中的元素 | |
virtual ufm::util::Iterator< const char > | end (void) override |
返回一個迭代器,用於遍歷集合的結尾 | |
virtual int | remaining (void) const override |
取得緩衝區剩餘空閒字節數。 | |
virtual int | putByte (const char data) override |
輸入單一字節至緩衝區 | |
virtual int | put (ufm::lang::Readable &readable) override |
從 Readable 物件附加資料至緩衝區 | |
virtual int | put (const void *pointer, int length) override |
從記憶體指標附加資料至緩衝區 | |
int | getSize (void) |
取得環形緩衝器的總大小(以位元組計算) | |
int | getHeadPosi (void) const |
取得緩衝器中頭部索引位置(模擬環形結構) | |
int | getTailPosi (void) const |
取得緩衝器中尾部索引位置(模擬環形結構) | |
ufm::lang::Memory & | getMemory (void) |
取得環形緩衝器的記憶體空間 | |
![]() | |
void * | operator new (size_t n) |
使用運算子 new 分配記憶體 | |
void * | operator new (size_t n, void *p) |
在指定記憶體上調用運算子 new | |
virtual ufm::lang::Object & | getObject (void) override |
取得對應的 Object 物件 | |
void | delay (int milliseconds) const |
延遲指定的毫秒數進行執行緒等待 | |
bool | equals (Object *object) const |
判斷與另一物件是否為相同參照(指標型態比較) | |
bool | equals (Object &object) const |
判斷與另一物件是否為相同參照(參照型態比較) | |
void | wait (void) const |
使當前線程等待直到被通知 | |
bool | wait (int timeout) const |
等待通知或超時 | |
bool | yield (void) const |
讓執行緒讓渡控制權給同優先權的下一個執行緒 | |
int | lock (void) const |
核心鎖定,鎖定期間禁止線程切換 | |
int | unlock (void) const |
核心解鎖 | |
ufm::sys::Thread * | currentThread (void) const |
取得當前執行緒指標 | |
virtual int | hashcode (void) const |
返回對象的哈希碼值。支持這種方法是為了散列表,如HashMap提供的那樣。 | |
![]() | |
virtual | ~Interface (void)=default |
虛擬析構函式 | |
![]() | |
int | put (ufm::lang::Readable &&readable) |
從右值 Readable 附加資料 | |
bool | isFull (void) const |
檢查緩衝區是否已滿 | |
![]() | |
bool | isEmpty (void) const |
檢查緩衝區是否為空 | |
int | poll (ufm::lang::Appendable &&appendable) |
從緩衝區讀取資料到臨時Appendable物件中 | |
int | skip (int length) |
跳過緩衝區中指定數量的資料 | |
環形緩衝器實現,支援循環式讀寫操作
此類別提供高效的環形緩衝區實現,特別適合生產者-消費者模型。 利用循環索引技術,實現資料的連續寫入和讀取,當到達緩衝區末尾時自動回到起始位置。 支援並發訪問控制與鎖定機制,適用於多執行緒環境。
|
noexcept |
使用指定記憶體建立環形緩衝器
會自動將容量調整為最接近的2的冪次方,以優化循環索引計算
memory | 用於緩衝區的記憶體空間 |
|
inline |
使用指定長度建立環形緩衝器
會自動分配記憶體並將容量調整為最接近的2的冪次方
length | 緩衝區所需的最小長度 |
|
inline |
使用指定指標和長度建立環形緩衝器
會自動將容量調整為最接近的2的冪次方,以優化循環索引計算
pointer | 指向緩衝區資料的指標 |
length | 緩衝區大小(位元組) |
|
overridevirtual |
|
overridevirtual |
|
overridevirtual |
清空緩衝區內容
將緩衝區內所有資料重設為初始狀態, 使其可重新用於資料的寫入與讀取。 實作時應確保所有暫存資料被移除, 並釋放相關資源(如有)。
實作 ufm::io::Buffer.
|
overridevirtual |
|
overridevirtual |
|
overridevirtual |
遍歷集合中所有元素,對每個元素執行指定操作。 若所有元素處理完畢或操作中發生異常則停止。
當操作導致底層資料源發生變動時(未同步處理),其行為未定義。
action | 對每個元素執行的操作 |
|
overridevirtual |
取得緩衝區的可寫入介面
透過此方法可獲取對緩衝區的寫入存取能力, 供資料寫入或從其他來源接收資料使用。
實作 ufm::io::Buffer.
|
inline |
取得環形緩衝器的記憶體空間
|
overridevirtual |
取得緩衝區的可讀取介面
透過此方法可獲取對緩衝區內容的讀取存取能力, 供資料讀取或轉移至其他目的地使用。
實作 ufm::io::Buffer.
|
overridevirtual |
返回當前索引的下一個有效索引。
index | 當前索引 |
如果當前索引已經是最後一個元素,則返回 -1。 如果當前索引無效(如 -1),則返回 0
|
overridevirtual |
從緩衝區讀取資料並寫入到Appendable物件中
appendable | [in] 接收資料的目標物件 |
|
overridevirtual |
從緩衝區讀取指定長度的資料到指定的記憶體位置
pointer | [out] 接收資料的記憶體位置, nullptr表示不接收資料僅跳過 |
length | [in] 要讀取的位元組數量 |
|
overridevirtual |
讀取一個字節並將其從緩衝區移除
result | [out] 儲存讀取到的字節 |
|
overridevirtual |
從記憶體指標附加資料至緩衝區
根據指定長度,將 pointer 指向的資料寫入緩衝區
pointer | 資料來源位址 |
length | 要寫入的字節數 |
|
overridevirtual |
從 Readable 物件附加資料至緩衝區
迴圈從 readable 讀取並寫入緩衝區,直到耗盡或空間不足
readable | 可讀資料來源 |
|
overridevirtual |
|
overridevirtual |