cloudwu / sproto

Yet another protocol library like google protocol buffers , but simple and fast.
MIT License
942 stars 253 forks source link

sprotoparser.lua生成的协议描述有随机性 #21

Closed actboy168 closed 9 years ago

actboy168 commented 9 years ago

同一个协议文件,执行两次得到的结果不一样。这样对版本管理工具不友好

cloudwu commented 9 years ago

我修了这个问题. 但是:

我认为

  1. 不应该把程序可以生成的东西提交到版本管理仓库里.
  2. 应该编写一个 makefile 来生成.
actboy168 commented 9 years ago

嗯,主要为了方便别人,msvc自动生成比较麻烦

我测试了testall.lua是没问题的,但是这有个有问题的例子。我想是因为alltypes排序后,里面name对应的index没有更新的原因

local print_r = require "print_r"
local sproto = require "sproto"
local parser = require "sprotoparser"
local descriptor = sproto.parse [[
.type {
    .field {
        name 0 : string
        buildin 1 : integer
        type 2 : integer
        tag 3 : integer
        array 4 : boolean
    }
    name 0 : string
    fields 1 : *field
}

.protocol {
    name 0 : string
    tag 1 : integer
    request 2 : integer # index
    response 3 : integer # index
}

.group {
    type 0 : *type
    protocol 1 : *protocol
}
]]

local rpc = [[
.rpc {
    ok 0 : boolean
}
]]

local desc = descriptor:decode("group", parser.parse(rpc))
print_r(desc)
cloudwu commented 9 years ago

谢谢, 我改了一下, 你看看.

actboy168 commented 9 years ago

可以了,谢谢:)