awtk/docs/manual/rbuffer_t.md
2023-12-26 19:09:36 +08:00

544 lines
14 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

## rbuffer\_t
### 概述
Read Buffer。用于数据解包。
示例:
```c
uint8_t buff[128];
wbuffer_t wbuffer;
rbuffer_t rbuffer;
const char* str = NULL;
wbuffer_init(&wbuffer, buff, sizeof(buff));
wbuffer_write_string(&wbuffer, "hello awtk");
rbuffer_init(&rbuffer, wbuffer.data, wbuffer.cursor);
rbuffer_read_string(&rbuffer, &str);
```
----------------------------------
### 函数
<p id="rbuffer_t_methods">
| 函数名称 | 说明 |
| -------- | ------------ |
| <a href="#rbuffer_t_rbuffer_create">rbuffer\_create</a> | 创建rbuffer对象。 |
| <a href="#rbuffer_t_rbuffer_deinit">rbuffer\_deinit</a> | 释放rbuffer资源。 |
| <a href="#rbuffer_t_rbuffer_destroy">rbuffer\_destroy</a> | 销毁rbuffer对象。 |
| <a href="#rbuffer_t_rbuffer_has_more">rbuffer\_has\_more</a> | 判断是否还有数据可读。 |
| <a href="#rbuffer_t_rbuffer_init">rbuffer\_init</a> | 初始rbuffer对象。 |
| <a href="#rbuffer_t_rbuffer_peek_uint16">rbuffer\_peek\_uint16</a> | 读取uint16数据但不改变cursor的位置。 |
| <a href="#rbuffer_t_rbuffer_peek_uint32">rbuffer\_peek\_uint32</a> | 读取uint32数据但不改变cursor的位置。 |
| <a href="#rbuffer_t_rbuffer_peek_uint8">rbuffer\_peek\_uint8</a> | 读取uint8数据但不改变cursor的位置。 |
| <a href="#rbuffer_t_rbuffer_read_binary">rbuffer\_read\_binary</a> | 读取指定长度的二进制数据。 |
| <a href="#rbuffer_t_rbuffer_read_double">rbuffer\_read\_double</a> | 读取double数据。 |
| <a href="#rbuffer_t_rbuffer_read_float">rbuffer\_read\_float</a> | 读取float数据。 |
| <a href="#rbuffer_t_rbuffer_read_int16">rbuffer\_read\_int16</a> | 读取int16数据。 |
| <a href="#rbuffer_t_rbuffer_read_int32">rbuffer\_read\_int32</a> | 读取int32数据。 |
| <a href="#rbuffer_t_rbuffer_read_int64">rbuffer\_read\_int64</a> | 读取int64数据。 |
| <a href="#rbuffer_t_rbuffer_read_int8">rbuffer\_read\_int8</a> | 读取int8数据。 |
| <a href="#rbuffer_t_rbuffer_read_string">rbuffer\_read\_string</a> | 读取字符串。 |
| <a href="#rbuffer_t_rbuffer_read_uint16">rbuffer\_read\_uint16</a> | 读取uint16数据。 |
| <a href="#rbuffer_t_rbuffer_read_uint32">rbuffer\_read\_uint32</a> | 读取uint32数据。 |
| <a href="#rbuffer_t_rbuffer_read_uint64">rbuffer\_read\_uint64</a> | 读取uint64数据。 |
| <a href="#rbuffer_t_rbuffer_read_uint8">rbuffer\_read\_uint8</a> | 读取uint8数据。 |
| <a href="#rbuffer_t_rbuffer_read_value">rbuffer\_read\_value</a> | 读取value数据。 |
| <a href="#rbuffer_t_rbuffer_rewind">rbuffer\_rewind</a> | 重置当前读取位置。 |
| <a href="#rbuffer_t_rbuffer_skip">rbuffer\_skip</a> | 跳过指定的长度。 |
### 属性
<p id="rbuffer_t_properties">
| 属性名称 | 类型 | 说明 |
| -------- | ----- | ------------ |
| <a href="#rbuffer_t_capacity">capacity</a> | uint32\_t | 缓存区的容量。 |
| <a href="#rbuffer_t_cursor">cursor</a> | uint32\_t | 当前读取位置。 |
| <a href="#rbuffer_t_data">data</a> | const uint8\_t* | 数据缓冲区。 |
#### rbuffer\_create 函数
-----------------------
* 函数功能:
> <p id="rbuffer_t_rbuffer_create">创建rbuffer对象。
* 函数原型:
```
rbuffer_t* rbuffer_create (const void* data, uint32_t capacity);
```
* 参数说明:
| 参数 | 类型 | 说明 |
| -------- | ----- | --------- |
| 返回值 | rbuffer\_t* | rbuffer对象本身。 |
| data | const void* | 缓冲区。 |
| capacity | uint32\_t | 缓冲区的容量。 |
#### rbuffer\_deinit 函数
-----------------------
* 函数功能:
> <p id="rbuffer_t_rbuffer_deinit">释放rbuffer资源。
* 函数原型:
```
ret_t rbuffer_deinit (rbuffer_t* rbuffer);
```
* 参数说明:
| 参数 | 类型 | 说明 |
| -------- | ----- | --------- |
| 返回值 | ret\_t | 返回RET\_OK表示成功否则表示失败。 |
| rbuffer | rbuffer\_t* | rbuffer对象。 |
#### rbuffer\_destroy 函数
-----------------------
* 函数功能:
> <p id="rbuffer_t_rbuffer_destroy">销毁rbuffer对象。
* 函数原型:
```
ret_t rbuffer_destroy (rbuffer_t* rbuffer);
```
* 参数说明:
| 参数 | 类型 | 说明 |
| -------- | ----- | --------- |
| 返回值 | ret\_t | 返回RET\_OK表示成功否则表示失败。 |
| rbuffer | rbuffer\_t* | rbuffer对象。 |
#### rbuffer\_has\_more 函数
-----------------------
* 函数功能:
> <p id="rbuffer_t_rbuffer_has_more">判断是否还有数据可读。
* 函数原型:
```
bool_t rbuffer_has_more (rbuffer_t* rbuffer);
```
* 参数说明:
| 参数 | 类型 | 说明 |
| -------- | ----- | --------- |
| 返回值 | bool\_t | 返回TRUE表示还有数据可读否则表示无数据可读。 |
| rbuffer | rbuffer\_t* | rbuffer对象。 |
#### rbuffer\_init 函数
-----------------------
* 函数功能:
> <p id="rbuffer_t_rbuffer_init">初始rbuffer对象。
* 函数原型:
```
rbuffer_t* rbuffer_init (rbuffer_t* rbuffer, const void* data, uint32_t capacity);
```
* 参数说明:
| 参数 | 类型 | 说明 |
| -------- | ----- | --------- |
| 返回值 | rbuffer\_t* | rbuffer对象本身。 |
| rbuffer | rbuffer\_t* | rbuffer对象。 |
| data | const void* | 缓冲区。 |
| capacity | uint32\_t | 缓冲区的容量。 |
#### rbuffer\_peek\_uint16 函数
-----------------------
* 函数功能:
> <p id="rbuffer_t_rbuffer_peek_uint16">读取uint16数据但不改变cursor的位置。
* 函数原型:
```
ret_t rbuffer_peek_uint16 (rbuffer_t* rbuffer, uint16_t* value);
```
* 参数说明:
| 参数 | 类型 | 说明 |
| -------- | ----- | --------- |
| 返回值 | ret\_t | 返回RET\_OK表示成功否则表示失败。 |
| rbuffer | rbuffer\_t* | rbuffer对象。 |
| value | uint16\_t* | 返回读取的数据。 |
#### rbuffer\_peek\_uint32 函数
-----------------------
* 函数功能:
> <p id="rbuffer_t_rbuffer_peek_uint32">读取uint32数据但不改变cursor的位置。
* 函数原型:
```
ret_t rbuffer_peek_uint32 (rbuffer_t* rbuffer, uint32_t* value);
```
* 参数说明:
| 参数 | 类型 | 说明 |
| -------- | ----- | --------- |
| 返回值 | ret\_t | 返回RET\_OK表示成功否则表示失败。 |
| rbuffer | rbuffer\_t* | rbuffer对象。 |
| value | uint32\_t* | 读取的数据。 |
#### rbuffer\_peek\_uint8 函数
-----------------------
* 函数功能:
> <p id="rbuffer_t_rbuffer_peek_uint8">读取uint8数据但不改变cursor的位置。
* 函数原型:
```
ret_t rbuffer_peek_uint8 (rbuffer_t* rbuffer, uint8_t* value);
```
* 参数说明:
| 参数 | 类型 | 说明 |
| -------- | ----- | --------- |
| 返回值 | ret\_t | 返回RET\_OK表示成功否则表示失败。 |
| rbuffer | rbuffer\_t* | rbuffer对象。 |
| value | uint8\_t* | 返回读取的数据。 |
#### rbuffer\_read\_binary 函数
-----------------------
* 函数功能:
> <p id="rbuffer_t_rbuffer_read_binary">读取指定长度的二进制数据。
* 函数原型:
```
ret_t rbuffer_read_binary (rbuffer_t* rbuffer, void* data, uint32_t size);
```
* 参数说明:
| 参数 | 类型 | 说明 |
| -------- | ----- | --------- |
| 返回值 | ret\_t | 返回RET\_OK表示成功否则表示失败。 |
| rbuffer | rbuffer\_t* | rbuffer对象。 |
| data | void* | 返回读取的数据。 |
| size | uint32\_t | 读取的数据长度。 |
#### rbuffer\_read\_double 函数
-----------------------
* 函数功能:
> <p id="rbuffer_t_rbuffer_read_double">读取double数据。
* 函数原型:
```
ret_t rbuffer_read_double (rbuffer_t* rbuffer, double* value);
```
* 参数说明:
| 参数 | 类型 | 说明 |
| -------- | ----- | --------- |
| 返回值 | ret\_t | 返回RET\_OK表示成功否则表示失败。 |
| rbuffer | rbuffer\_t* | rbuffer对象。 |
| value | double* | 返回读取的数据。 |
#### rbuffer\_read\_float 函数
-----------------------
* 函数功能:
> <p id="rbuffer_t_rbuffer_read_float">读取float数据。
* 函数原型:
```
ret_t rbuffer_read_float (rbuffer_t* rbuffer, float* value);
```
* 参数说明:
| 参数 | 类型 | 说明 |
| -------- | ----- | --------- |
| 返回值 | ret\_t | 返回RET\_OK表示成功否则表示失败。 |
| rbuffer | rbuffer\_t* | rbuffer对象。 |
| value | float* | 返回读取的数据。 |
#### rbuffer\_read\_int16 函数
-----------------------
* 函数功能:
> <p id="rbuffer_t_rbuffer_read_int16">读取int16数据。
* 函数原型:
```
ret_t rbuffer_read_int16 (rbuffer_t* rbuffer, int16_t* value);
```
* 参数说明:
| 参数 | 类型 | 说明 |
| -------- | ----- | --------- |
| 返回值 | ret\_t | 返回RET\_OK表示成功否则表示失败。 |
| rbuffer | rbuffer\_t* | rbuffer对象。 |
| value | int16\_t* | 读取的数据。 |
#### rbuffer\_read\_int32 函数
-----------------------
* 函数功能:
> <p id="rbuffer_t_rbuffer_read_int32">读取int32数据。
* 函数原型:
```
ret_t rbuffer_read_int32 (rbuffer_t* rbuffer, int32_t* value);
```
* 参数说明:
| 参数 | 类型 | 说明 |
| -------- | ----- | --------- |
| 返回值 | ret\_t | 返回RET\_OK表示成功否则表示失败。 |
| rbuffer | rbuffer\_t* | rbuffer对象。 |
| value | int32\_t* | 返回读取的数据。 |
#### rbuffer\_read\_int64 函数
-----------------------
* 函数功能:
> <p id="rbuffer_t_rbuffer_read_int64">读取int64数据。
* 函数原型:
```
ret_t rbuffer_read_int64 (rbuffer_t* rbuffer, int64_t* value);
```
* 参数说明:
| 参数 | 类型 | 说明 |
| -------- | ----- | --------- |
| 返回值 | ret\_t | 返回RET\_OK表示成功否则表示失败。 |
| rbuffer | rbuffer\_t* | rbuffer对象。 |
| value | int64\_t* | 返回读取的数据。 |
#### rbuffer\_read\_int8 函数
-----------------------
* 函数功能:
> <p id="rbuffer_t_rbuffer_read_int8">读取int8数据。
* 函数原型:
```
ret_t rbuffer_read_int8 (rbuffer_t* rbuffer, int8_t* value);
```
* 参数说明:
| 参数 | 类型 | 说明 |
| -------- | ----- | --------- |
| 返回值 | ret\_t | 返回RET\_OK表示成功否则表示失败。 |
| rbuffer | rbuffer\_t* | rbuffer对象。 |
| value | int8\_t* | 返回读取的数据。 |
#### rbuffer\_read\_string 函数
-----------------------
* 函数功能:
> <p id="rbuffer_t_rbuffer_read_string">读取字符串。
* 函数原型:
```
ret_t rbuffer_read_string (rbuffer_t* rbuffer, const char** str);
```
* 参数说明:
| 参数 | 类型 | 说明 |
| -------- | ----- | --------- |
| 返回值 | ret\_t | 返回RET\_OK表示成功否则表示失败。 |
| rbuffer | rbuffer\_t* | rbuffer对象。 |
| str | const char** | 返回字符串。 |
#### rbuffer\_read\_uint16 函数
-----------------------
* 函数功能:
> <p id="rbuffer_t_rbuffer_read_uint16">读取uint16数据。
* 函数原型:
```
ret_t rbuffer_read_uint16 (rbuffer_t* rbuffer, uint16_t* value);
```
* 参数说明:
| 参数 | 类型 | 说明 |
| -------- | ----- | --------- |
| 返回值 | ret\_t | 返回RET\_OK表示成功否则表示失败。 |
| rbuffer | rbuffer\_t* | rbuffer对象。 |
| value | uint16\_t* | 读取的数据。 |
#### rbuffer\_read\_uint32 函数
-----------------------
* 函数功能:
> <p id="rbuffer_t_rbuffer_read_uint32">读取uint32数据。
* 函数原型:
```
ret_t rbuffer_read_uint32 (rbuffer_t* rbuffer, uint32_t* value);
```
* 参数说明:
| 参数 | 类型 | 说明 |
| -------- | ----- | --------- |
| 返回值 | ret\_t | 返回RET\_OK表示成功否则表示失败。 |
| rbuffer | rbuffer\_t* | rbuffer对象。 |
| value | uint32\_t* | 返回读取的数据。 |
#### rbuffer\_read\_uint64 函数
-----------------------
* 函数功能:
> <p id="rbuffer_t_rbuffer_read_uint64">读取uint64数据。
* 函数原型:
```
ret_t rbuffer_read_uint64 (rbuffer_t* rbuffer, uint64_t* value);
```
* 参数说明:
| 参数 | 类型 | 说明 |
| -------- | ----- | --------- |
| 返回值 | ret\_t | 返回RET\_OK表示成功否则表示失败。 |
| rbuffer | rbuffer\_t* | rbuffer对象。 |
| value | uint64\_t* | 返回读取的数据。 |
#### rbuffer\_read\_uint8 函数
-----------------------
* 函数功能:
> <p id="rbuffer_t_rbuffer_read_uint8">读取uint8数据。
* 函数原型:
```
ret_t rbuffer_read_uint8 (rbuffer_t* rbuffer, uint8_t* value);
```
* 参数说明:
| 参数 | 类型 | 说明 |
| -------- | ----- | --------- |
| 返回值 | ret\_t | 返回RET\_OK表示成功否则表示失败。 |
| rbuffer | rbuffer\_t* | rbuffer对象。 |
| value | uint8\_t* | 返回读取的数据。 |
#### rbuffer\_read\_value 函数
-----------------------
* 函数功能:
> <p id="rbuffer_t_rbuffer_read_value">读取value数据。
* 函数原型:
```
ret_t rbuffer_read_value (rbuffer_t* rbuffer, value_t* v);
```
* 参数说明:
| 参数 | 类型 | 说明 |
| -------- | ----- | --------- |
| 返回值 | ret\_t | 返回RET\_OK表示成功否则表示失败。 |
| rbuffer | rbuffer\_t* | rbuffer对象。 |
| v | value\_t* | 返回读取的数据。 |
#### rbuffer\_rewind 函数
-----------------------
* 函数功能:
> <p id="rbuffer_t_rbuffer_rewind">重置当前读取位置。
* 函数原型:
```
ret_t rbuffer_rewind (rbuffer_t* rbuffer);
```
* 参数说明:
| 参数 | 类型 | 说明 |
| -------- | ----- | --------- |
| 返回值 | ret\_t | 返回RET\_OK表示成功否则表示失败。 |
| rbuffer | rbuffer\_t* | rbuffer对象。 |
#### rbuffer\_skip 函数
-----------------------
* 函数功能:
> <p id="rbuffer_t_rbuffer_skip">跳过指定的长度。
* 函数原型:
```
ret_t rbuffer_skip (rbuffer_t* rbuffer, int32_t offset);
```
* 参数说明:
| 参数 | 类型 | 说明 |
| -------- | ----- | --------- |
| 返回值 | ret\_t | 返回RET\_OK表示成功否则表示失败。 |
| rbuffer | rbuffer\_t* | rbuffer对象。 |
| offset | int32\_t | 跳过的偏移量,正数往前负数往回跳。 |
#### capacity 属性
-----------------------
> <p id="rbuffer_t_capacity">缓存区的容量。
* 类型uint32\_t
| 特性 | 是否支持 |
| -------- | ----- |
| 可直接读取 | 是 |
| 可直接修改 | 否 |
#### cursor 属性
-----------------------
> <p id="rbuffer_t_cursor">当前读取位置。
* 类型uint32\_t
| 特性 | 是否支持 |
| -------- | ----- |
| 可直接读取 | 是 |
| 可直接修改 | 否 |
#### data 属性
-----------------------
> <p id="rbuffer_t_data">数据缓冲区。
* 类型const uint8\_t*
| 特性 | 是否支持 |
| -------- | ----- |
| 可直接读取 | 是 |
| 可直接修改 | 否 |