mFrame
載入中...
搜尋中...
無符合項目
ufm::io::RingBuffer 類別 參考文件

環形緩衝器實現,支援循環式讀寫操作 更多...

#include <RingBuffer.h>

類別ufm::io::RingBuffer的繼承圖:
ufm::lang::Object ufm::lang::Appendable ufm::lang::Readable ufm::io::Buffer ufm::lang::Interface ufm::lang::Iterable< const char >

公開方法(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::ReadablegetReadable (void) override
 取得緩衝區的可讀取介面
 
virtual ufm::lang::AppendablegetAppendable (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::MemorygetMemory (void)
 取得環形緩衝器的記憶體空間
 
- 公開方法(Public Methods) 繼承自 ufm::lang::Object
void * operator new (size_t n)
 使用運算子 new 分配記憶體
 
void * operator new (size_t n, void *p)
 在指定記憶體上調用運算子 new
 
virtual ufm::lang::ObjectgetObject (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::ThreadcurrentThread (void) const
 取得當前執行緒指標
 
virtual int hashcode (void) const
 返回對象的哈希碼值。支持這種方法是為了散列表,如HashMap提供的那樣。
 
- 公開方法(Public Methods) 繼承自 ufm::lang::Interface
virtual ~Interface (void)=default
 虛擬析構函式
 
- 公開方法(Public Methods) 繼承自 ufm::lang::Appendable
int put (ufm::lang::Readable &&readable)
 從右值 Readable 附加資料
 
bool isFull (void) const
 檢查緩衝區是否已滿
 
- 公開方法(Public Methods) 繼承自 ufm::lang::Readable
bool isEmpty (void) const
 檢查緩衝區是否為空
 
int poll (ufm::lang::Appendable &&appendable)
 從緩衝區讀取資料到臨時Appendable物件中
 
int skip (int length)
 跳過緩衝區中指定數量的資料
 

詳細描述

環形緩衝器實現,支援循環式讀寫操作

此類別提供高效的環形緩衝區實現,特別適合生產者-消費者模型。 利用循環索引技術,實現資料的連續寫入和讀取,當到達緩衝區末尾時自動回到起始位置。 支援並發訪問控制與鎖定機制,適用於多執行緒環境。

建構子與解構子說明文件

◆ RingBuffer() [1/3]

ufm::io::RingBuffer::RingBuffer ( ufm::lang::Memory memory)
noexcept

使用指定記憶體建立環形緩衝器

會自動將容量調整為最接近的2的冪次方,以優化循環索引計算

參數
memory用於緩衝區的記憶體空間

◆ RingBuffer() [2/3]

ufm::io::RingBuffer::RingBuffer ( int length)
inline

使用指定長度建立環形緩衝器

會自動分配記憶體並將容量調整為最接近的2的冪次方

參數
length緩衝區所需的最小長度

◆ RingBuffer() [3/3]

ufm::io::RingBuffer::RingBuffer ( void * pointer,
int length )
inline

使用指定指標和長度建立環形緩衝器

會自動將容量調整為最接近的2的冪次方,以優化循環索引計算

參數
pointer指向緩衝區資料的指標
length緩衝區大小(位元組)

函式成員說明文件

◆ avariable()

virtual int ufm::io::RingBuffer::avariable ( void ) const
overridevirtual

取得可讀取的資料數量

傳回值
int 返回緩衝區中可用的位元組數量

實作 ufm::lang::Readable.

◆ begin()

virtual ufm::util::Iterator< const char > ufm::io::RingBuffer::begin ( void )
overridevirtual

返回一個迭代器,用於遍歷集合中的元素

傳回值
PArraySet::Iterator 返回一個指向集合元素的迭代器

實作 ufm::lang::Iterable< const char >.

◆ clear()

virtual void ufm::io::RingBuffer::clear ( void )
overridevirtual

清空緩衝區內容

將緩衝區內所有資料重設為初始狀態, 使其可重新用於資料的寫入與讀取。 實作時應確保所有暫存資料被移除, 並釋放相關資源(如有)。

此操作不保證釋放底層記憶體,僅重設邏輯內容。
1.0.0

實作 ufm::io::Buffer.

◆ elementAt()

virtual const char * ufm::io::RingBuffer::elementAt ( int index) const
overridevirtual

獲取集合中指定索引處的元素。

參數
index要獲取的元素索引
傳回值
E* 指向集合中指定索引處元素的指針

實作 ufm::lang::Iterable< const char >.

◆ end()

virtual ufm::util::Iterator< const char > ufm::io::RingBuffer::end ( void )
overridevirtual

返回一個迭代器,用於遍歷集合的結尾

傳回值
PArraySet::Iterator 返回一個指向集合結尾的迭代器

實作 ufm::lang::Iterable< const char >.

◆ forEach()

virtual void ufm::io::RingBuffer::forEach ( ufm::func::Consumer< const char & > & action)
overridevirtual

遍歷集合中所有元素,對每個元素執行指定操作。 若所有元素處理完畢或操作中發生異常則停止。

當操作導致底層資料源發生變動時(未同步處理),其行為未定義。

參數
action對每個元素執行的操作

實作 ufm::lang::Iterable< const char >.

◆ getAppendable()

virtual ufm::lang::Appendable & ufm::io::RingBuffer::getAppendable ( void )
overridevirtual

取得緩衝區的可寫入介面

透過此方法可獲取對緩衝區的寫入存取能力, 供資料寫入或從其他來源接收資料使用。

傳回值
ufm::lang::Appendable& 緩衝區的可寫入介面

實作 ufm::io::Buffer.

◆ getMemory()

ufm::lang::Memory & ufm::io::RingBuffer::getMemory ( void )
inline

取得環形緩衝器的記憶體空間

傳回值
ufm::lang::Memory& 返回環形緩衝器的記憶體參考

◆ getReadable()

virtual ufm::lang::Readable & ufm::io::RingBuffer::getReadable ( void )
overridevirtual

取得緩衝區的可讀取介面

透過此方法可獲取對緩衝區內容的讀取存取能力, 供資料讀取或轉移至其他目的地使用。

傳回值
ufm::lang::Readable& 緩衝區的可讀取介面

實作 ufm::io::Buffer.

◆ nextIndex()

virtual int ufm::io::RingBuffer::nextIndex ( int index) const
overridevirtual

返回當前索引的下一個有效索引。

參數
index當前索引
傳回值
int 下一個有效索引

如果當前索引已經是最後一個元素,則返回 -1。 如果當前索引無效(如 -1),則返回 0

實作 ufm::lang::Iterable< const char >.

◆ poll() [1/2]

virtual int ufm::io::RingBuffer::poll ( ufm::lang::Appendable & appendable)
overridevirtual

從緩衝區讀取資料並寫入到Appendable物件中

參數
appendable[in] 接收資料的目標物件
傳回值
int 返回實際讀取並移除的位元組數量

實作 ufm::lang::Readable.

◆ poll() [2/2]

virtual int ufm::io::RingBuffer::poll ( void * pointer,
int length )
overridevirtual

從緩衝區讀取指定長度的資料到指定的記憶體位置

參數
pointer[out] 接收資料的記憶體位置, nullptr表示不接收資料僅跳過
length[in] 要讀取的位元組數量
傳回值
int 返回實際讀取的位元組數量

實作 ufm::lang::Readable.

◆ pollByte()

virtual int ufm::io::RingBuffer::pollByte ( char & result)
overridevirtual

讀取一個字節並將其從緩衝區移除

參數
result[out] 儲存讀取到的字節
傳回值
int 返回緩衝區中剩餘的可讀取位元組數量
-1 如果讀取失敗或緩衝區為空

實作 ufm::lang::Readable.

◆ put() [1/2]

virtual int ufm::io::RingBuffer::put ( const void * pointer,
int length )
overridevirtual

從記憶體指標附加資料至緩衝區

根據指定長度,將 pointer 指向的資料寫入緩衝區

參數
pointer資料來源位址
length要寫入的字節數
傳回值
int 實際寫入的字節數

實作 ufm::lang::Appendable.

◆ put() [2/2]

virtual int ufm::io::RingBuffer::put ( ufm::lang::Readable & readable)
overridevirtual

從 Readable 物件附加資料至緩衝區

迴圈從 readable 讀取並寫入緩衝區,直到耗盡或空間不足

參數
readable可讀資料來源
傳回值
int 實際寫入的字節數

實作 ufm::lang::Appendable.

◆ putByte()

virtual int ufm::io::RingBuffer::putByte ( const char data)
overridevirtual

輸入單一字節至緩衝區

參數
data要寫入的字節
傳回值
int 寫入後緩衝區剩餘空間(字節數)

實作 ufm::lang::Appendable.

◆ remaining()

virtual int ufm::io::RingBuffer::remaining ( void ) const
overridevirtual

取得緩衝區剩餘空閒字節數。

傳回值
int 剩餘的空閒字節數。

實作 ufm::lang::Appendable.


此類別(class) 文件是由下列檔案中產生: