|
libxr
1.0
Want to be the best embedded framework
|
WritePort class for handling write operations. More...
#include <libxr_rw.hpp>
Data Structures | |
| class | Stream |
| WritePort 的流式写入操作器,支持链式 << 操作和批量提交。 More... | |
Public Types | |
| enum class | LockState : uint32_t { LOCKED = 0 , UNLOCKED = UINT32_MAX } |
Public Member Functions | |
| WritePort (size_t queue_size=3, size_t buffer_size=128) | |
| 构造一个新的 WritePort 对象。 Constructs a new WritePort object. | |
| virtual size_t | EmptySize () |
| 获取数据队列的剩余可用空间。 Gets the remaining available space in the data queue. | |
| virtual size_t | Size () |
| 获取当前数据队列的已使用大小。 Gets the used size of the current data queue. | |
| bool | Writable () |
| 判断端口是否可写。 Checks whether the port is writable. | |
| WritePort & | operator= (WriteFun fun) |
| 赋值运算符重载,用于设置写入函数。 Overloaded assignment operator to set the write function. | |
| void | Finish (bool in_isr, ErrorCode ans, WriteInfoBlock &info, uint32_t size) |
| 更新写入操作的状态。 Updates the status of the write operation. | |
| void | MarkAsRunning (WriteOperation &op) |
| 标记写入操作为运行中。 Marks the write operation as running. | |
| ErrorCode | operator() (ConstRawData data, WriteOperation &op) |
| 执行写入操作。 Performs a write operation. | |
| virtual void | Reset () |
| Resets the WritePort. | |
Data Fields | |
| WriteFun | write_fun_ = nullptr |
| LockFreeQueue< WriteInfoBlock > * | queue_info_ |
| LockFreeQueue< uint8_t > * | queue_data_ |
| std::atomic< LockState > | lock_ {LockState::UNLOCKED} |
| size_t | write_size_ = 0 |
Private Member Functions | |
| ErrorCode | CommitWrite (ConstRawData data, WriteOperation &op, bool pushed=false) |
WritePort class for handling write operations.
处理写入操作的WritePort类。
Definition at line 402 of file libxr_rw.hpp.
|
strong |
Definition at line 405 of file libxr_rw.hpp.
| WritePort::WritePort | ( | size_t | queue_size = 3, |
| size_t | buffer_size = 128 ) |
构造一个新的 WritePort 对象。 Constructs a new WritePort object.
该构造函数初始化无锁操作队列 queue_info_ 和数据块队列 queue_data_。 This constructor initializes the lock-free operation queue queue_info_ and the data block queue queue_data_.
| queue_size | 队列的大小,默认为 3。 The size of the queue, default is 3. |
| block_size | 缓存的数据的最大大小,默认为 128。 The maximum size of cached data, default is 128. |
Definition at line 178 of file libxr_rw.cpp.
|
private |
Definition at line 243 of file libxr_rw.cpp.
|
virtual |
获取数据队列的剩余可用空间。 Gets the remaining available space in the data queue.
Reimplemented in LibXR::ESP32UARTWritePort, and LibXR::TinyUSBUARTWritePort.
Definition at line 187 of file libxr_rw.cpp.
| void WritePort::Finish | ( | bool | in_isr, |
| ErrorCode | ans, | ||
| WriteInfoBlock & | info, | ||
| uint32_t | size ) |
更新写入操作的状态。 Updates the status of the write operation.
该函数在写入操作过程中更新 write_size_ 并调用 UpdateStatus 方法更新 op 的状态。 This function updates write_size_ and calls UpdateStatus on op during a write operation.
| in_isr | 指示是否在中断上下文中执行。 Indicates whether the operation is executed in an interrupt context. |
| ans | 错误码,用于指示操作的结果。 Error code indicating the result of the operation. |
| op | 需要更新状态的 WriteOperation 引用。 Reference to the WriteOperation whose status needs to be updated. |
| size | 写入的数据大小。 The size of the written data. |
Definition at line 207 of file libxr_rw.cpp.
| void WritePort::MarkAsRunning | ( | WriteOperation & | op | ) |
标记写入操作为运行中。 Marks the write operation as running.
该函数用于将 op 标记为运行状态,以指示当前正在进行写入操作。 This function marks op as running to indicate an ongoing write operation.
| op | 需要更新状态的 WriteOperation 引用。 Reference to the WriteOperation whose status needs to be updated. |
Definition at line 213 of file libxr_rw.cpp.
| ErrorCode WritePort::operator() | ( | ConstRawData | data, |
| WriteOperation & | op ) |
执行写入操作。 Performs a write operation.
该函数检查端口是否可写,并根据 data.size_ 和 op 的类型执行不同的操作。 This function checks if the port is writable and performs different actions based on data.size_ and the type of op.
| data | 需要写入的原始数据。 Raw data to be written. |
| op | 写入操作对象,包含操作类型和同步机制。 Write operation object containing the operation type and synchronization mechanism. |
ErrorCode,指示操作结果。 Returns an ErrorCode indicating the result of the operation. Definition at line 215 of file libxr_rw.cpp.
赋值运算符重载,用于设置写入函数。 Overloaded assignment operator to set the write function.
该函数允许使用 WriteFun 类型的函数对象赋值给 WritePort,从而设置 write_fun_。 This function allows assigning a WriteFun function object to WritePort, setting write_fun_.
| fun | 要分配的写入函数。 The write function to be assigned. |
Definition at line 201 of file libxr_rw.cpp.
|
virtual |
Resets the WritePort.
重置WritePort。
Reimplemented in LibXR::ESP32UARTWritePort, and LibXR::TinyUSBUARTWritePort.
Definition at line 333 of file libxr_rw.cpp.
|
virtual |
获取当前数据队列的已使用大小。 Gets the used size of the current data queue.
Reimplemented in LibXR::ESP32UARTWritePort, and LibXR::TinyUSBUARTWritePort.
Definition at line 193 of file libxr_rw.cpp.
| bool WritePort::Writable | ( | ) |
判断端口是否可写。 Checks whether the port is writable.
write_fun_ 不为空,则返回 true,否则返回 false。 Returns true if write_fun_ is not null, otherwise returns false. Definition at line 199 of file libxr_rw.cpp.
| std::atomic<LockState> LibXR::WritePort::lock_ {LockState::UNLOCKED} |
Definition at line 414 of file libxr_rw.hpp.
| LockFreeQueue<uint8_t>* LibXR::WritePort::queue_data_ |
Definition at line 413 of file libxr_rw.hpp.
| LockFreeQueue<WriteInfoBlock>* LibXR::WritePort::queue_info_ |
Definition at line 412 of file libxr_rw.hpp.
| WriteFun LibXR::WritePort::write_fun_ = nullptr |
Definition at line 411 of file libxr_rw.hpp.
| size_t LibXR::WritePort::write_size_ = 0 |
Definition at line 415 of file libxr_rw.hpp.