![]() |
mFrame
|
靈活高效的位元組緩衝區實現 更多...
#include <ByteBuffer.h>
公開方法(Public Methods) | |
ByteBuffer (ufm::lang::Memory memory) noexcept | |
使用現有記憶體建立位元組緩衝區 | |
ByteBuffer (int length) | |
建立指定大小的位元組緩衝區 | |
ByteBuffer (void *pointer, int length) | |
使用常數指標建立位元組緩衝區 | |
virtual | ~ByteBuffer (void) override |
釋放緩衝區資源 | |
ByteBuffer & | operator<< (char c) |
重載運算子 <<,將 char 資料寫入 ByteBuffer。 | |
ByteBuffer & | operator<< (short s) |
重載運算子 <<,將 short 資料寫入 ByteBuffer。 | |
ByteBuffer & | operator<< (int v) |
重載運算子 <<,將 int 資料寫入 ByteBuffer。 | |
ByteBuffer & | operator<< (const char *string) |
重載運算子 <<,將字串寫入 ByteBuffer。 | |
ByteBuffer & | operator<< (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::Readable & | getReadable (void) override |
獲取 ByteBuffer 的可讀物件。 | |
virtual ufm::lang::Appendable & | getAppendable (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 的位置。 | |
ByteBuffer & | reset (void) |
重置 ByteBuffer 的位置到標記。 | |
ByteBuffer & | mark (void) |
標記 ByteBuffer 的當前位置。 | |
ByteBuffer & | rewind (void) |
將 ByteBuffer 的位置重置為 0。 | |
bool | pollByte (uint8 &result) |
從 ByteBuffer 中提取一個 byte。 | |
bool | pollShort (uint16 &result) |
從 ByteBuffer 中提取一個 short。 | |
bool | pollInt (uint32 &result) |
從 ByteBuffer 中提取一個 int。 | |
ufm::lang::Memory & | memory (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。 | |
![]() | |
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) |
跳過緩衝區中指定數量的資料 | |
保護屬性 | |
ufm::lang::Memory | vMemory |
int | vPosition |
int | vMark |
int | vLimit |
靈活高效的位元組緩衝區實現
ByteBuffer 提供了對記憶體的高效讀寫操作,支援多種資料類型的讀寫, 並管理讀寫位置、標記和限制。此類設計靈感來自 Java NIO 中的 ByteBuffer, 適用於需要精確控制讀寫位置的場景,如資料解析、網路通訊等。
|
noexcept |
使用現有記憶體建立位元組緩衝區
memory | 用於儲存資料的記憶體物件 |
|
inline |
建立指定大小的位元組緩衝區
length | 緩衝區大小(位元組) |
|
inline |
使用常數指標建立位元組緩衝區
pointer | 指向資料的常數指標 |
length | 緩衝區大小(位元組) |
|
overridevirtual |
|
overridevirtual |
|
inline |
獲取 ByteBuffer 的容量。
|
overridevirtual |
清空緩衝區內容
將緩衝區內所有資料重設為初始狀態, 使其可重新用於資料的寫入與讀取。 實作時應確保所有暫存資料被移除, 並釋放相關資源(如有)。
實作 ufm::io::Buffer.
|
overridevirtual |
|
overridevirtual |
void ufm::io::ByteBuffer::flip | ( | void | ) |
翻轉緩衝區,為讀取已寫入資料做準備
此操作會將限制設為當前位置,位置重置為 0,並清除標記。 通常用於切換從寫入模式到讀取模式。
|
overridevirtual |
遍歷集合中所有元素,對每個元素執行指定操作。 若所有元素處理完畢或操作中發生異常則停止。
當操作導致底層資料源發生變動時(未同步處理),其行為未定義。
action | 對每個元素執行的操作 |
|
overridevirtual |
|
overridevirtual |
bool ufm::io::ByteBuffer::limit | ( | int | newLimit | ) |
|
inline |
獲取 ByteBuffer 的限制。
|
inline |
標記 ByteBuffer 的當前位置。
|
inline |
獲取 ByteBuffer 的記憶體。
void ufm::io::ByteBuffer::move | ( | int | position | ) |
|
overridevirtual |
返回當前索引的下一個有效索引。
index | 當前索引 |
如果當前索引已經是最後一個元素,則返回 -1。 如果當前索引無效(如 -1),則返回 0
|
inline |
重載運算子 ++,將 ByteBuffer 的位置向前移動一位(後置)。
|
inline |
重載運算子 ++,將 ByteBuffer 的位置向前移動一位。
|
inline |
重載運算子 +=,將 ByteBuffer 的位置向前移動指定的位移量。
shift | 要移動的位移量。 |
|
inline |
重載運算子 –,將 ByteBuffer 的位置向後移動一位(後置)。
|
inline |
重載運算子 –,將 ByteBuffer 的位置向後移動一位。
|
inline |
重載運算子 -=,將 ByteBuffer 的位置向後移動指定的位移量。
shift | 要移動的位移量。 |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
重載運算子 <<,將 ufm::lang::Strings 物件寫入 ByteBuffer。
string | 要寫入的 ufm::lang::Strings 物件。 |
|
inline |
|
overridevirtual |
從緩衝區讀取資料並寫入到Appendable物件中
appendable | [in] 接收資料的目標物件 |
|
overridevirtual |
從緩衝區讀取指定長度的資料到指定的記憶體位置
pointer | [out] 接收資料的記憶體位置, nullptr表示不接收資料僅跳過 |
length | [in] 要讀取的位元組數量 |
|
overridevirtual |
讀取一個字節並將其從緩衝區移除
`
result | [out] 儲存讀取到的字節 |
|
inline |
bool ufm::io::ByteBuffer::pollFloat | ( | float & | result | ) |
bool ufm::io::ByteBuffer::pollInt | ( | int & | result | ) |
|
inline |
bool ufm::io::ByteBuffer::pollShort | ( | short & | result | ) |
|
inline |
bool ufm::io::ByteBuffer::position | ( | int | newPosition | ) |
|
inline |
獲取 ByteBuffer 的位置。
bool ufm::io::ByteBuffer::put | ( | const char * | string | ) |
將字串寫入 ByteBuffer。
string | 要寫入的字串。 |
bool ufm::io::ByteBuffer::put | ( | const ufm::lang::Strings & | string | ) |
|
overridevirtual |
從記憶體指標附加資料至緩衝區
根據指定長度,將 pointer 指向的資料寫入緩衝區
pointer | 資料來源位址 |
length | 要寫入的字節數 |
|
overridevirtual |
從 Readable 物件附加資料至緩衝區
迴圈從 readable 讀取並寫入緩衝區,直到耗盡或空間不足
readable | 可讀資料來源 |
|
overridevirtual |
bool ufm::io::ByteBuffer::putFloat | ( | const float | value | ) |
將 float 資料寫入 ByteBuffer。
value | 要寫入的 float 資料。 |
int ufm::io::ByteBuffer::putFormat | ( | const char * | format, |
va_list | args ) |
將格式化字串寫入 ByteBuffer。
format | 格式化字串。 |
args | 參數列表。 |
int ufm::io::ByteBuffer::putFormat | ( | const char * | format, |
... ) |
將格式化字串寫入 ByteBuffer。
format | 格式化字串。 |
... | 可變參數。 |
bool ufm::io::ByteBuffer::putInt | ( | const int | value | ) |
將 int 資料寫入 ByteBuffer。
value | 要寫入的 int 資料。 |
bool ufm::io::ByteBuffer::putShort | ( | const short | value | ) |
將 short 資料寫入 ByteBuffer。
value | 要寫入的 short 資料。 |
|
overridevirtual |
|
inline |
重置 ByteBuffer 的位置到標記。
|
inline |
將 ByteBuffer 的位置重置為 0。