初试 sproto
来源:互联网 发布:python 打印日志 编辑:程序博客网 时间:2024/06/05 15:12
在U3D 热更的路上,尝试了 SLua 和 Proto-gen-lua,之前虽然打算过集成sproto ,但是一直没去弄,今天晚上下班早,就下过来尝试下。
转自http://www.liveslives.com http://www.thisisgame.com.cn
sproto的 git 地址:
https://github.com/cloudwu/sproto.git
sproto 的写法和 protobuf 差不多,但是按照云风的爱好被设计成 C 的模式。
.Person { name 0 : string id 1 : integer email 2 : string .PhoneNumber { number 0 : string type 1 : integer } phone 3 : *PhoneNumber}.AddressBook { person 0 : *Person}
比如说 Person 这个 sproto,和下面的protobuf 是对应的
message Person { required string name = 1; required int32 id = 2; optional string email = 3; message PhoneNumber { required string number = 1; optional int32 type = 2 ; } repeated PhoneNumber phone = 4;}message AddressBook { repeated Person person = 1;}
使用方法:
local sproto = require "sproto"local core = require "sproto.core"local print_r = require "print_r"local sprotoParse = sproto.parse [[.Person {name 0 : stringid 1 : integeremail 2 : string.PhoneNumber {number 0 : stringtype 1 : integer}phone 3 : *PhoneNumber}.AddressBook {person 0 : *Person(id)others 1 : *Person}]]local personDefault=sprotoParse:default "Person"print("default tabel for Person:")print_r(personDefault)local addressBook={person={[1]={name="captain1",id=1,email="1111@qq.com",phone={{number="137000001",type=1},{number="137000002",type=2},}},[2]={name="captain2",id=2,email="2222@qq.com",phone={{number="138000001",type=1},{number="138000002",type=2},}},},others={[1]={name="other",id=1,email="others@qq.com",phone={{number="139000001",type=1}}},}}local encodeData = sprotoParse:encode("AddressBook",addressBook)local decodeData=sprotoParse:decode("AddressBook",encodeData)print("decodeData:")print_r(decodeData)转自http://www.liveslives.com http://www.thisisgame.com.cn
因为云风的Repository中只有 sproto 源码,Wiki中没有介绍如何编译,所以新手还是建议 Clone 我的Repository。
https://github.com/ThisisGame/sproto
0 0
- 初试 sproto
- sproto
- Sproto协议简析
- skynet的sproto模块
- sproto parse方法解析
- 初试
- 初试
- 初试
- 初试
- Sproto(与客户端通信协议)
- 【Skynet】Sproto初学与应用
- 网络层处理,及使用sproto
- unity-与skynet通信二三事(sproto,crypt)
- 【quick】quick-cocos2d-x导入sproto并重新编译player
- skynet sproto 阅读笔记之一 协议的生成
- skynet sproto 阅读笔记之二 协议的构造
- 在cocos2dx-lua上导入sproto的相关配置
- 初试blog
- Sort a linked list using insertion sort
- 点击启动,暂停动画
- git push -u origin master 出错 \Permission denied (publickey). fatal: Could not read from remote repo
- Java多线程——Callable、Future和FutureTask
- ViewHolder报空指针????
- 初试 sproto
- ERROR in AppModule is not an NgModule
- 448. Find All Numbers Disappeared in an Array
- 深入浅出RxJava2.0_01[重新理解背压概念]
- Builder模式演义(2)——OkHttp源码中的Builder模式
- js数组中forEach,map,filter的区别
- 求迷宫出路以及最优解,小试牛刀。
- Android中IntentService和HandlerThread的分析
- Spring3.X jdk8 java.lang.IllegalArgumentException