protobuf在互联网领域应用广泛,同时lua在游戏领域中作为一门热门的脚本语言也备受注目。protoc-gen-lua库实现了protobuf到lua的移植,但是相关接口说明文档并不充分(只有一个非常简单的example),本着学习lua的心态,花了一些时间看看它的实现源码。
整体看下来,作者在实现上将function作为lua一类公民(first-class type)的身份发挥的淋漓尽致,处处闭包,需要花一些时间仔细学习。
本文做一个简单的归纳。
protobuf的编码原理推荐两篇文章:
http://www.cnblogs.com/fullsail/p/4220293.html
http://www.cnblogs.com/cobbliu/archive/2013/03/02/2940074.html
本文也是参照protobuf的编码原理对照着看源码的,事半功倍
- 编码
编码的实现都在encoder.lua中