Clojure Gloss-来自MQTT协议规范的可变字节整数编解码器



我正在Clojure中开发MQTT服务器。我使用Gloss来解析二进制数据。然而,我被可变字节整数卡住了,不知道如何为此创建编解码器。我的直觉是它应该以某种方式使用header帧,但我不知道如何将其组合在一起。所以我的问题是:1。是否可以将其表示为Gloss编解码器,或者我应该使用其他方法?2.你能为此提供编解码器吗?谢谢

阅读文档时,似乎需要定义一些新的东西来处理VBI编码。

由于Gloss似乎只期望固定长度的表示,因此您的算法可能需要在开始时接受带有VBI的字节块,然后解码VBI并返回

  1. 解码值
  2. 剩余的字节

然后可以将(2(中的字节正常输入到Gloss。如果VBI不是整个输入中的第一个项目,则可以使用Gloss或任何其他方式去掉任何前导字节。

最终为Gloss创建了自定义编解码器https://github.com/selentium/clj-mqtt/blob/master/src/clj_mqtt/varint.clj

最新更新