为 python-sproto 添加 map 支持
上个月太忙了,做完这个修改还没写博客,现在补一下。。
之前使用 protobuf 做协议打包的时候,经常会有个痛点,没法用具体数据的值作为 key 来索引数据。比如现在客户端上传了造兵协议,协议大概长这样:
{
{
troop_type = 101,
amount = 1,
},
{
troop_tyoe = 102,
amount = 2,
},
}
可以看到,造兵协议是一个数组,数组里每个元素是一个结构,包含 troop_type(兵种类别)和 amount(数量)。每次收到的时候,都需要遍历一次来建立一个以 troop_type 为 key 的字典,或者使用时根据 troop_type 来遍历查找。
{
[101] = {
troop_type = 1,
amount = 1,
},
[102] = {
troop_tyoe = 2,
amount = 2,
},
}
最后,还添加了一点异常处理,若解包过程中出错,会把解出来的这个字典直接释放掉。有点担心异常处理的时候,会不会导致引用计数没有处理好,引起内存泄漏。以后有空再做一下内存泄漏分析 ~ 具体的修改可以参考:https://github.com/spin6lock/python-sproto.git
Tag:
python