首先把所有的proto文件bia编译成一个库,如protofile.so,这样我们只需要知道任何一个message的名字,就可以把这个message描述出来,把lua里面的一个表对应成protofile里面的一个message。lua表里的键值对应message里的field域,如
message Man
{
required uint32 id;
repeated uint32 phone;
};
对应的table 为Man = {}
Man.id
man.phone
这样对table Man 赋值,经过处理后,就相当于对new出来的message Man赋值,当给Man赋值后,就可以对其进行序列化成二进制数据。
后面再读取二进制数据,再把其填充到new出来的Man里面,再把Message Man填充lua表Man。
这样就进行了反序列化。
待续。