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

靈活高效的位元組緩衝區實現 更多...

#include <ByteBuffer.h>

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

公開方法(Public Methods)

 ByteBuffer (ufm::lang::Memory memory) noexcept
 使用現有記憶體建立位元組緩衝區
 
 ByteBuffer (int length)
 建立指定大小的位元組緩衝區
 
 ByteBuffer (void *pointer, int length)
 使用常數指標建立位元組緩衝區
 
virtual ~ByteBuffer (void) override
 釋放緩衝區資源
 
ByteBufferoperator<< (char c)
 重載運算子 <<,將 char 資料寫入 ByteBuffer。
 
ByteBufferoperator<< (short s)
 重載運算子 <<,將 short 資料寫入 ByteBuffer。
 
ByteBufferoperator<< (int v)
 重載運算子 <<,將 int 資料寫入 ByteBuffer。
 
ByteBufferoperator<< (const char *string)
 重載運算子 <<,將字串寫入 ByteBuffer。
 
ByteBufferoperator<< (ufm::lang::Strings &string)
 重載運算子 <<,將 ufm::lang::Strings 物件寫入 ByteBuffer。
 
int operator= (int v)
 重載運算子 =,設定 ByteBuffer 的位置。
 
void operator+= (int shift)
 重載運算子 +=,將 ByteBuffer 的位置向前移動指定的位移量。
 
void operator-= (int shift)
 重載運算子 -=,將 ByteBuffer 的位置向後移動指定的位移量。
 
uint32 operator++ (void)
 重載運算子 ++,將 ByteBuffer 的位置向前移動一位。
 
uint32 operator-- (void)
 重載運算子 –,將 ByteBuffer 的位置向後移動一位。
 
uint32 operator++ (int)
 重載運算子 ++,將 ByteBuffer 的位置向前移動一位(後置)。
 
uint32 operator-- (int)
 重載運算子 –,將 ByteBuffer 的位置向後移動一位(後置)。
 
virtual void clear (void) override
 清空緩衝區內容
 
virtual ufm::lang::ReadablegetReadable (void) override
 獲取 ByteBuffer 的可讀物件。
 
virtual ufm::lang::AppendablegetAppendable (void) override
 獲取 ByteBuffer 的可追加物件。
 
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 limit (void) const
 獲取 ByteBuffer 的限制。
 
int capacity (void) const
 獲取 ByteBuffer 的容量。
 
int position (void) const
 獲取 ByteBuffer 的位置。
 
ByteBufferreset (void)
 重置 ByteBuffer 的位置到標記。
 
ByteBuffermark (void)
 標記 ByteBuffer 的當前位置。
 
ByteBufferrewind (void)
 ByteBuffer 的位置重置為 0。
 
bool pollByte (uint8 &result)
 ByteBuffer 中提取一個 byte。
 
bool pollShort (uint16 &result)
 ByteBuffer 中提取一個 short。
 
bool pollInt (uint32 &result)
 ByteBuffer 中提取一個 int。
 
ufm::lang::Memorymemory (void)
 獲取 ByteBuffer 的記憶體。
 
bool limit (int newLimit)
 設定 ByteBuffer 的限制。
 
bool position (int newPosition)
 設定 ByteBuffer 的位置。
 
void flip (void)
 翻轉緩衝區,為讀取已寫入資料做準備
 
void move (int position)
 將位置移動到指定位置
 
bool put (const char *string)
 將字串寫入 ByteBuffer。
 
bool put (const ufm::lang::Strings &string)
 ufm::lang::Strings 物件寫入 ByteBuffer。
 
int putFormat (const char *format,...)
 將格式化字串寫入 ByteBuffer。
 
int putFormat (const char *format, va_list args)
 將格式化字串寫入 ByteBuffer。
 
bool putShort (const short value)
 將 short 資料寫入 ByteBuffer。
 
bool putInt (const int value)
 將 int 資料寫入 ByteBuffer。
 
bool putFloat (const float value)
 將 float 資料寫入 ByteBuffer。
 
bool pollShort (short &result)
 ByteBuffer 中提取一個 short。
 
bool pollInt (int &result)
 ByteBuffer 中提取一個 int。
 
bool pollFloat (float &result)
 ByteBuffer 中提取一個 float。
 
- 公開方法(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)
 跳過緩衝區中指定數量的資料
 

保護屬性

ufm::lang::Memory vMemory
 
int vPosition
 
int vMark
 
int vLimit
 

詳細描述

靈活高效的位元組緩衝區實現

ByteBuffer 提供了對記憶體的高效讀寫操作,支援多種資料類型的讀寫, 並管理讀寫位置、標記和限制。此類設計靈感來自 Java NIO 中的 ByteBuffer, 適用於需要精確控制讀寫位置的場景,如資料解析、網路通訊等。

1.0.0

建構子與解構子說明文件

◆ ByteBuffer() [1/3]

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

使用現有記憶體建立位元組緩衝區

參數
memory用於儲存資料的記憶體物件

◆ ByteBuffer() [2/3]

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

建立指定大小的位元組緩衝區

參數
length緩衝區大小(位元組)

◆ ByteBuffer() [3/3]

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

使用常數指標建立位元組緩衝區

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

函式成員說明文件

◆ avariable()

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

取得可讀取的資料數量

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

實作 ufm::lang::Readable.

◆ begin()

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

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

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

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

◆ capacity()

int ufm::io::ByteBuffer::capacity ( void ) const
inline

獲取 ByteBuffer 的容量。

傳回值
int 返回容量。

◆ clear()

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

清空緩衝區內容

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

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

實作 ufm::io::Buffer.

◆ elementAt()

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

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

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

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

◆ end()

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

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

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

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

◆ flip()

void ufm::io::ByteBuffer::flip ( void )

翻轉緩衝區,為讀取已寫入資料做準備

此操作會將限制設為當前位置,位置重置為 0,並清除標記。 通常用於切換從寫入模式到讀取模式。

◆ forEach()

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

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

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

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

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

◆ getAppendable()

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

獲取 ByteBuffer 的可追加物件。

傳回值
ufm::lang::Appendable& 返回可追加物件的引用。

實作 ufm::io::Buffer.

◆ getReadable()

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

獲取 ByteBuffer 的可讀物件。

傳回值
ufm::lang::Readable& 返回可讀物件的引用。

實作 ufm::io::Buffer.

◆ limit() [1/2]

bool ufm::io::ByteBuffer::limit ( int newLimit)

設定 ByteBuffer 的限制。

參數
newLimit新的限制。
傳回值
bool 返回設定是否成功。

◆ limit() [2/2]

int ufm::io::ByteBuffer::limit ( void ) const
inline

獲取 ByteBuffer 的限制。

傳回值
int 返回限制。

◆ mark()

ByteBuffer & ufm::io::ByteBuffer::mark ( void )
inline

標記 ByteBuffer 的當前位置。

傳回值
ByteBuffer& 返回當前 ByteBuffer 物件的引用。

◆ memory()

ufm::lang::Memory & ufm::io::ByteBuffer::memory ( void )
inline

獲取 ByteBuffer 的記憶體。

傳回值
ufm::lang::Memory& 返回記憶體的引用。

◆ move()

void ufm::io::ByteBuffer::move ( int position)

將位置移動到指定位置

position() 不同,此方法不檢查位置有效性,主要用於內部操作。

參數
position新的位置

◆ nextIndex()

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

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

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

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

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

◆ operator++() [1/2]

uint32 ufm::io::ByteBuffer::operator++ ( int )
inline

重載運算子 ++,將 ByteBuffer 的位置向前移動一位(後置)。

傳回值
uint32 返回移動前的位置。

◆ operator++() [2/2]

uint32 ufm::io::ByteBuffer::operator++ ( void )
inline

重載運算子 ++,將 ByteBuffer 的位置向前移動一位。

傳回值
uint32 返回移動後的位置。

◆ operator+=()

void ufm::io::ByteBuffer::operator+= ( int shift)
inline

重載運算子 +=,將 ByteBuffer 的位置向前移動指定的位移量。

參數
shift要移動的位移量。

◆ operator--() [1/2]

uint32 ufm::io::ByteBuffer::operator-- ( int )
inline

重載運算子 –,將 ByteBuffer 的位置向後移動一位(後置)。

傳回值
uint32 返回移動前的位置。

◆ operator--() [2/2]

uint32 ufm::io::ByteBuffer::operator-- ( void )
inline

重載運算子 –,將 ByteBuffer 的位置向後移動一位。

傳回值
uint32 返回移動後的位置。

◆ operator-=()

void ufm::io::ByteBuffer::operator-= ( int shift)
inline

重載運算子 -=,將 ByteBuffer 的位置向後移動指定的位移量。

參數
shift要移動的位移量。

◆ operator<<() [1/5]

ByteBuffer & ufm::io::ByteBuffer::operator<< ( char c)
inline

重載運算子 <<,將 char 資料寫入 ByteBuffer。

參數
c要寫入的 char 資料。
傳回值
ByteBuffer& 返回當前 ByteBuffer 物件的引用。

◆ operator<<() [2/5]

ByteBuffer & ufm::io::ByteBuffer::operator<< ( const char * string)
inline

重載運算子 <<,將字串寫入 ByteBuffer。

參數
string要寫入的字串。
傳回值
ByteBuffer& 返回當前 ByteBuffer 物件的引用。

◆ operator<<() [3/5]

ByteBuffer & ufm::io::ByteBuffer::operator<< ( int v)
inline

重載運算子 <<,將 int 資料寫入 ByteBuffer。

參數
v要寫入的 int 資料。
傳回值
ByteBuffer& 返回當前 ByteBuffer 物件的引用。

◆ operator<<() [4/5]

ByteBuffer & ufm::io::ByteBuffer::operator<< ( short s)
inline

重載運算子 <<,將 short 資料寫入 ByteBuffer。

參數
s要寫入的 short 資料。
傳回值
ByteBuffer& 返回當前 ByteBuffer 物件的引用。

◆ operator<<() [5/5]

ByteBuffer & ufm::io::ByteBuffer::operator<< ( ufm::lang::Strings & string)
inline

重載運算子 <<,將 ufm::lang::Strings 物件寫入 ByteBuffer。

參數
string要寫入的 ufm::lang::Strings 物件。
傳回值
ByteBuffer& 返回當前 ByteBuffer 物件的引用。

◆ operator=()

int ufm::io::ByteBuffer::operator= ( int v)
inline

重載運算子 =,設定 ByteBuffer 的位置。

參數
v要設定的位置。
傳回值
int 返回設定後的位置。

◆ poll() [1/2]

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

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

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

實作 ufm::lang::Readable.

◆ poll() [2/2]

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

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

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

實作 ufm::lang::Readable.

◆ pollByte() [1/2]

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

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

`

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

實作 ufm::lang::Readable.

◆ pollByte() [2/2]

bool ufm::io::ByteBuffer::pollByte ( uint8 & result)
inline

ByteBuffer 中提取一個 byte。

參數
result存儲提取結果的變數。
傳回值
bool 返回提取是否成功。

◆ pollFloat()

bool ufm::io::ByteBuffer::pollFloat ( float & result)

ByteBuffer 中提取一個 float。

參數
result存儲提取結果的變數。
傳回值
bool 返回提取是否成功。

◆ pollInt() [1/2]

bool ufm::io::ByteBuffer::pollInt ( int & result)

ByteBuffer 中提取一個 int。

參數
result存儲提取結果的變數。
傳回值
bool 返回提取是否成功。

◆ pollInt() [2/2]

bool ufm::io::ByteBuffer::pollInt ( uint32 & result)
inline

ByteBuffer 中提取一個 int。

參數
result存儲提取結果的變數。
傳回值
bool 返回提取是否成功。

◆ pollShort() [1/2]

bool ufm::io::ByteBuffer::pollShort ( short & result)

ByteBuffer 中提取一個 short。

參數
result存儲提取結果的變數。
傳回值
bool 返回提取是否成功。

◆ pollShort() [2/2]

bool ufm::io::ByteBuffer::pollShort ( uint16 & result)
inline

ByteBuffer 中提取一個 short。

參數
result存儲提取結果的變數。
傳回值
bool 返回提取是否成功。

◆ position() [1/2]

bool ufm::io::ByteBuffer::position ( int newPosition)

設定 ByteBuffer 的位置。

參數
newPosition新的位置。
傳回值
bool 返回設定是否成功。

◆ position() [2/2]

int ufm::io::ByteBuffer::position ( void ) const
inline

獲取 ByteBuffer 的位置。

傳回值
int 返回位置。

◆ put() [1/4]

bool ufm::io::ByteBuffer::put ( const char * string)

將字串寫入 ByteBuffer。

參數
string要寫入的字串。
傳回值
bool 返回寫入是否成功。

◆ put() [2/4]

bool ufm::io::ByteBuffer::put ( const ufm::lang::Strings & string)

ufm::lang::Strings 物件寫入 ByteBuffer。

參數
string要寫入的 ufm::lang::Strings 物件。
傳回值
bool 返回寫入是否成功。

◆ put() [3/4]

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

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

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

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

實作 ufm::lang::Appendable.

◆ put() [4/4]

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

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

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

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

實作 ufm::lang::Appendable.

◆ putByte()

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

輸入單一字節至緩衝區

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

實作 ufm::lang::Appendable.

◆ putFloat()

bool ufm::io::ByteBuffer::putFloat ( const float value)

將 float 資料寫入 ByteBuffer。

參數
value要寫入的 float 資料。
傳回值
bool 返回寫入是否成功。

◆ putFormat() [1/2]

int ufm::io::ByteBuffer::putFormat ( const char * format,
va_list args )

將格式化字串寫入 ByteBuffer。

參數
format格式化字串。
args參數列表。
傳回值
int 返回寫入的字元數。

◆ putFormat() [2/2]

int ufm::io::ByteBuffer::putFormat ( const char * format,
... )

將格式化字串寫入 ByteBuffer。

參數
format格式化字串。
...可變參數。
傳回值
int 返回寫入的字元數。

◆ putInt()

bool ufm::io::ByteBuffer::putInt ( const int value)

將 int 資料寫入 ByteBuffer。

參數
value要寫入的 int 資料。
傳回值
bool 返回寫入是否成功。

◆ putShort()

bool ufm::io::ByteBuffer::putShort ( const short value)

將 short 資料寫入 ByteBuffer。

參數
value要寫入的 short 資料。
傳回值
bool 返回寫入是否成功。

◆ remaining()

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

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

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

實作 ufm::lang::Appendable.

◆ reset()

ByteBuffer & ufm::io::ByteBuffer::reset ( void )
inline

重置 ByteBuffer 的位置到標記。

傳回值
ByteBuffer& 返回當前 ByteBuffer 物件的引用。

◆ rewind()

ByteBuffer & ufm::io::ByteBuffer::rewind ( void )
inline

ByteBuffer 的位置重置為 0。

傳回值
ByteBuffer& 返回當前 ByteBuffer 物件的引用。

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