消息格式
服务器和客户端来往的消息只有三种,分别是订阅(SUB),发布(PUB),推送消息(MSG). 其中前两种是从客户端向服务端推送,最后一种则是服务端向客户端推送....返回结果
parse的结果不外乎四种情况
出错了
到目前为止还没有收到完整的消息 比如只收到了SUB SUBJECT ,消息不完整,当然不能处理
一条PUB消息
一条SUB消息
rust #[derive...消息不完整,我肯定不能处理 Sub(SubArg), Pub(PubArg), }
Parser
Parser的定义这个版本我们尽量去满足上述三个原则,但是考虑到第二条zero-copy....
parse 函数的定义
/**
对收到的字节序列进行解析,解析完毕后得到pub或者sub消息,
同时有可能没有消息或者缓冲区里面还有其他消息
返回结果中的usize指的是消耗了缓冲区中多少字节...,可以直接放在buf中,无需另外分配内存
//另一种是消息体很长,无法放在buf中,额外分配了msg_buf空间
fn add_msg(&mut self, b: u8) {