17 Star 74 Fork 35

Plato / ServiceBox

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
README-lua_sync_proxy_call.md 1.12 KB
一键复制 编辑 原始数据 按行查看 历史
dennis-kk 提交于 2020-12-02 15:29 . update README-lua_sync_proxy_call.md.

Lua proxy同步调用

使用Lua编写服务时支持lua协程的方式与远程service实例进行RPC通信, lua协程的启动和调度已经内置在service box内部,对使用者没有感知.

调用过程

假设有如下服务:

service dynamic Login multiple=8 {
    ui64 login(string, string)
    void logout(ui64)
}

框架生成工具会生成如下的lua proxy文件, 具体实现已省略:

ProxyLogin={}
ProxyLogin.proxy_id = 0
EmptyArgs = {}

function ProxyLogin:login(arg1,arg2)
    ......
end

function ProxyLogin:logout(arg1)
    ......
end

Proxy = Proxy or {}

function Proxy:get_Login_timeout(name, timeout)
    ......
end
......

调用方服务实现内, 假设注册的服务路径为'/service/login', 调用Login服务代理的异步版本:

--获取服务,可保存以备后续使用
--获取名字为/service/login的服务,超时时间为2000毫秒,超时将返回nil
local login_prx = Proxy:get_LuaLogin_timeout("/service/login", 2000)
......
--通过代理调用远程服务实例,过程中协程会yield,调用失败或超时将返回nil
local id = login_prx:login("user", "passwd")
C++
1
https://gitee.com/dennis-kk/service-box.git
git@gitee.com:dennis-kk/service-box.git
dennis-kk
service-box
ServiceBox
v0.3.0-alpha

搜索帮助