:
尽可能的避免内存分配
尽可能的避免内存复制(zero copy)
不要使用正则表达式去匹配
实现
根据上述原则,我最终选择使用状态机,这是最灵活的方式,虽然代码绍魏复杂一点,但是可以调整以尽可能满足上述三个原则...注意这里的实现只针对服务端,相关代码都位于我的github
错误处理
错误处理这是在所有的系统中都要处理的事情,这里我先把可能发生的错误都列在这里,然后定义...._ => return "unkown error",
}
}
}
状态定义
这里采用的是逐个byte解析的方式. 只处理pub和sub两种消息....="sub top.stevenbai.blog" sub消息不完整,我肯定不能处理 Sub(SubArg), Pub(PubArg), }
Parser
Parser的定义这个版本我们尽量去满足上述三个原则....
parse 函数的定义
/**
对收到的字节序列进行解析,解析完毕后得到pub或者sub消息,
同时有可能没有消息或者缓冲区里面还有其他消息
返回结果中的usize指的是消耗了缓冲区中多少字节