FIX 消息帧解码器
More...
#include <fix_frame_decoder.hpp>
|
| | FixFrameDecoder (size_t max_buffer_size, size_t max_body_length) |
| | 构造帧解码器
|
| |
| bool | can_append (size_t len) const |
| | 检查是否可以追加指定长度的数据
|
| |
| void | append (const char *data, size_t len) |
| | 向内部缓冲区追加数据
|
| |
| bool | next_message (std::string &message) |
| | 尝试从缓冲区提取下一条完整消息
|
| |
FIX 消息帧解码器
由于 TCP 是流式协议,接收到的数据可能包含多条消息(粘包) 或不完整的消息(拆包)。该类负责缓存数据并提取完整的 FIX 消息。
- 工作原理
- 查找消息起始标记 "8=FIX.4.0\x01"
- 解析 BodyLength (9=) 获取消息体长度
- 计算完整消息长度并提取
- 使用示例
decoder.append(buffer, bytes_read);
std::string msg;
while (decoder.next_message(msg)) {
process_message(msg);
}
FIX 消息帧解码器
Definition fix_frame_decoder.hpp:41
◆ FixFrameDecoder()
| fix40::FixFrameDecoder::FixFrameDecoder |
( |
size_t |
max_buffer_size, |
|
|
size_t |
max_body_length |
|
) |
| |
|
explicit |
构造帧解码器
- Parameters
-
| max_buffer_size | 缓冲区最大大小(字节),防止内存耗尽 |
| max_body_length | 消息体最大长度(字节),防止解析超长消息 |
◆ append()
| void fix40::FixFrameDecoder::append |
( |
const char * |
data, |
|
|
size_t |
len |
|
) |
| |
向内部缓冲区追加数据
- Parameters
-
- Exceptions
-
| std::runtime_error | 缓冲区溢出时抛出异常 |
◆ can_append()
| bool fix40::FixFrameDecoder::can_append |
( |
size_t |
len | ) |
const |
检查是否可以追加指定长度的数据
- Parameters
-
- Returns
- true 可以追加(不会溢出)
-
false 追加后会超出缓冲区限制
◆ next_message()
| bool fix40::FixFrameDecoder::next_message |
( |
std::string & |
message | ) |
|
尝试从缓冲区提取下一条完整消息
- Parameters
-
- Returns
- true 成功提取一条完整消息
-
false 数据不足,无法提取完整消息
- Note
- 应循环调用直到返回 false,以处理粘包情况
- Exceptions
-
| std::runtime_error | BodyLength 无效时抛出异常 |
The documentation for this class was generated from the following files: