我需要从非常大的消息日志中提取和处理数据(可变大小的二进制消息)。使用Gif示例和在线文档,我已经定义并编译了可变大小消息布局到msg_log.py。调用msg_log.from_file("small_logfile")让我能够检查并验证日志文件中第一条消息的字段值。
对于适合内存的小型日志文件,我如何使msg_log.py检查日志文件中的第二、第三或后续消息?
对于非常大的日志文件,我希望通过一个字节缓冲区分页输入。目前我还没有做这个操作,并且没有找到关于如何进行此操作的示例或讨论。当内容发生变化时,我该如何使msg_log.py与分页的字节缓冲区保持同步?
我的消息结构当前定义如下。(我也使用了“seq”代替“instances”,但仍然只能检查第一条消息。)
meta:
id: message
endian: be
instances:
msg_header:
pos: 0x00
type: message_header
dom_header:
pos: 0x06
type: domain_header
body:
pos: 0x2b
size: msg_header.length - 43
types:
message_header:
seq:
- id: length
type: u1
<other fixed-size fields - 5 bytes>
domain_header:
seq:
<fixed-size fields - 37 bytes>
message_body:
seq:
- id: body
size-eos: true