青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
金慶的專(zhuān)欄
C++博客
::
首頁(yè)
::
新隨筆
::
聯(lián)系
::
聚合
::
管理
::
423 隨筆 :: 0 文章 :: 454 評(píng)論 :: 0 Trackbacks
公告
我的隨筆
我的評(píng)論
我參與的隨筆
留言簿
(12)
給我留言
查看公開(kāi)留言
查看私人留言
隨筆分類(lèi)
(502)
1. C/C++(166)
(rss)
2. 網(wǎng)游開(kāi)發(fā)(108)
(rss)
3. Golang(20)
(rss)
4. Linux/Unix(30)
(rss)
5. 軟工與管理(44)
(rss)
6. Python(23)
(rss)
7. Erlang(18)
(rss)
8. Rust(16)
(rss)
9. 其它(77)
(rss)
隨筆檔案
(423)
2023年1月 (1)
2022年11月 (1)
2022年10月 (2)
2022年9月 (1)
2022年4月 (6)
2022年1月 (2)
2021年12月 (4)
2021年11月 (6)
2021年10月 (2)
2021年9月 (2)
2021年8月 (7)
2021年7月 (2)
2021年5月 (2)
2021年3月 (1)
2021年2月 (2)
2021年1月 (1)
2020年12月 (1)
2020年10月 (1)
2020年9月 (5)
2020年8月 (1)
2020年7月 (1)
2020年6月 (1)
2020年4月 (2)
2020年3月 (3)
2020年2月 (3)
2020年1月 (1)
2019年12月 (1)
2019年9月 (2)
2019年4月 (2)
2019年1月 (1)
2018年12月 (1)
2018年11月 (3)
2018年10月 (1)
2018年9月 (3)
2018年8月 (3)
2018年7月 (2)
2018年6月 (4)
2018年5月 (4)
2018年4月 (4)
2018年3月 (1)
2018年1月 (2)
2017年12月 (2)
2017年11月 (3)
2017年10月 (3)
2017年8月 (7)
2017年7月 (1)
2017年6月 (1)
2017年5月 (3)
2017年4月 (3)
2017年3月 (3)
2017年2月 (2)
2017年1月 (2)
2016年12月 (5)
2016年11月 (2)
2016年10月 (2)
2016年9月 (1)
2016年8月 (6)
2016年7月 (3)
2016年6月 (2)
2016年5月 (4)
2016年4月 (2)
2016年3月 (2)
2016年1月 (3)
2015年12月 (2)
2015年11月 (2)
2015年10月 (1)
2015年8月 (2)
2015年7月 (1)
2015年6月 (1)
2015年5月 (4)
2015年4月 (3)
2015年3月 (4)
2015年2月 (5)
2015年1月 (4)
2014年12月 (3)
2014年11月 (3)
2014年10月 (2)
2014年9月 (3)
2014年8月 (1)
2014年4月 (4)
2014年3月 (1)
2014年2月 (4)
2014年1月 (5)
2013年12月 (5)
2013年11月 (5)
2013年9月 (2)
2013年8月 (2)
2013年7月 (2)
2013年6月 (2)
2013年5月 (1)
2013年1月 (2)
2012年12月 (1)
2012年11月 (1)
2012年9月 (1)
2012年8月 (3)
2012年7月 (2)
2012年6月 (1)
2012年4月 (3)
2012年3月 (2)
2012年2月 (3)
2012年1月 (2)
2011年11月 (2)
2011年10月 (3)
2011年9月 (2)
2011年8月 (2)
2011年7月 (3)
2011年6月 (2)
2011年5月 (3)
2011年1月 (2)
2010年12月 (1)
2010年11月 (2)
2010年10月 (2)
2010年9月 (3)
2010年8月 (2)
2010年7月 (3)
2010年6月 (1)
2010年5月 (3)
2010年4月 (3)
2010年3月 (5)
2010年2月 (4)
2010年1月 (4)
2009年12月 (2)
2009年11月 (3)
2009年10月 (4)
2009年9月 (3)
2009年8月 (2)
2009年7月 (4)
2009年6月 (1)
2009年5月 (3)
2009年4月 (4)
2009年3月 (2)
2009年2月 (5)
2009年1月 (1)
2008年12月 (7)
2008年11月 (4)
2008年10月 (1)
2008年9月 (3)
2008年8月 (4)
2008年7月 (3)
2008年6月 (4)
2008年5月 (6)
2008年4月 (7)
2008年3月 (6)
2008年1月 (5)
2007年12月 (7)
2007年11月 (4)
2007年10月 (5)
2007年9月 (6)
2007年8月 (8)
2007年7月 (5)
相冊(cè)
公告照片
搜索
積分與排名
積分 - 662250
排名 - 25
最新評(píng)論
1.?re: boost::asio::spawn 將一統(tǒng)C++網(wǎng)絡(luò)庫(kù)
asio 成為C++首選網(wǎng)絡(luò)庫(kù)
--linda
2.?re: log4cxx中文輸出錯(cuò)誤補(bǔ)丁
評(píng)論內(nèi)容較長(zhǎng),點(diǎn)擊標(biāo)題查看
--金慶
3.?re: mingw編譯OrzNet
能發(fā)送一個(gè)mingw編譯好的OrzNet庫(kù)給我嗎? liuweiqcxy@163.com
謝謝!
--劉威
4.?re: log4cxx中文輸出錯(cuò)誤補(bǔ)丁
評(píng)論內(nèi)容較長(zhǎng),點(diǎn)擊標(biāo)題查看
--bigbad
5.?re: log4cxx中文輸出錯(cuò)誤補(bǔ)丁
評(píng)論內(nèi)容較長(zhǎng),點(diǎn)擊標(biāo)題查看
--bigbad
閱讀排行榜
1.?"multiple definition of" 錯(cuò)誤(11074)
2.?SVN中邪惡的replace(11000)
3.?VS2005編譯libevent(10456)
4.?混音算法的學(xué)習(xí)與研究(10258)
5.?C調(diào)用lua腳本的效率測(cè)試(9025)
評(píng)論排行榜
1.?VC6正在被拋棄(35)
2.?VS2005編譯libevent(21)
3.?"multiple definition of" 錯(cuò)誤(18)
4.?C++引用優(yōu)于指針(17)
5.?ACE與ASIO之間關(guān)于Socket編程的比較(16)
跨服Lua調(diào)用
跨服Lua調(diào)用
(金慶的專(zhuān)欄 2017.3)
跨服Lua調(diào)用是指服務(wù)器集群內(nèi)部A服調(diào)用B服上的腳本。
服務(wù)器之間已經(jīng)實(shí)現(xiàn)RPC調(diào)用,Lua調(diào)用是Rpc調(diào)用的簡(jiǎn)化方式。
示例:
-- Tell remote server svr_id that game_clt_id is disconnected.
local arguments = { "Remote.ClientDisconnected", game_clt_id }
remote_runner.run_mfa(svr_id, "event.dispatcher",
"dispatch", arguments)
以上例子相當(dāng)于調(diào)用了其他服務(wù)器上的代碼:
require("event.dispatcher").dispatch("Remote.ClientDisconnected", game_clt_id)
需要參數(shù)為:
* 遠(yuǎn)程服務(wù)器ID
* Lua模塊名
* Lua模塊中的函數(shù)名
* 調(diào)用參數(shù)列表
remote_runner這樣實(shí)現(xiàn):
-- 運(yùn)行另一服務(wù)器上的Lua代碼
-- 也支持本服運(yùn)行(本服RPC調(diào)用)
local M = {}
local log = require("log"):new("remote_runner")
local pb = require("protobuf")
local serpent = require("serpent")
-- on_result(result) 生成 rpc 回調(diào)函數(shù) cb(resp_str)
local function get_mfa_cb(on_result)
if (not on_result) then return nil end
assert("function" == type(on_result))
local cb = function(resp_str)
assert("string" == type(resp_str))
local resp = pb.decode("svr.RunLuaMfaResponse", resp_str)
local ok, copy = serpent.load(resp.returned_dump)
assert(ok, "Run mfa returns invalid value.")
log:debug("RunLuaMfaResponse: %s", serpent.line(copy))
on_result(table.unpack(copy)) -- 回調(diào)時(shí)執(zhí)行
end -- cb
return cb
end -- get_mfa_cb()
-- Run module function with arguments on remote server.
-- 示例 rum_mfa(123, "event.dispatcher", "dispatch", {"EventName", 1,2,3}, nil)
function M.run_mfa(svr_id, module_name, function_name, arguments, on_result)
assert("number" == type(svr_id))
assert("string" == type(module_name))
assert("string" == type(function_name))
assert("table" == type(arguments))
assert(nil == on_result or "function" == type(on_result))
log:debug("Request to call Svr_%s %s.%s()", svr_id, module_name, function_name)
local req = {
module_name = module_name,
function_name = function_name,
arguments_dump = serpent.dump(arguments)
}
local req_str = pb.encode("svr.RunLuaMfaRequest", req)
local cb = get_mfa_cb(on_result)
c_rpc.request_svr(svr_id, "svr.RunLua", "RunMfa", req_str, cb)
end -- run()
return M
通過(guò)Rpc服務(wù)RunLua.RunMfa實(shí)現(xiàn)。run_lua.proto如下定義
syntax = "proto3";
package svr;
// 服務(wù)器內(nèi)部跨服調(diào)用Lua
service RunLua {
// 運(yùn)行 module.function(...arguments...)
rpc RunMfa(RunLuaMfaRequest) returns (RunLuaMfaResponse);
}
message RunLuaMfaRequest {
string module_name = 1;
string function_name = 2;
// arguments_dump = serpent.dump({1,2,3})
string arguments_dump = 3;
}
message RunLuaMfaResponse {
// Get returned table copy:
// local ok, copy = serpent.load(returned_dump)
string returned_dump = 1;
}
服務(wù)這樣實(shí)現(xiàn):
-- svc_run_lua.lua
-- Run lua by other servers.
local M = {}
local log = require("log"):new("svc_run_lua")
local pb = require("protobuf")
-- Run module.function(...arguments...)
function M.RunMfa(ctx, content)
local req = pb.decode("svr.RunLuaMfaRequest", content)
log:debug("RunMfa %s.%s", req.module_name, req.function_name) -- todo: from where?
local mod = require(req.module_name)
local fun = mod[req.function_name]
local ok, arguments = serpent.load(serpent.dump(req.arguments_dump))
assert(ok, "Illegal arguments.")
local result_table = table.pack(fun(table.unpack(arguments)))
local resp = { returned_dump = serpent.dump(result_table) }
local resp_str = pb.encode("svr.RunLuaMfaResponse", resp)
c_rpc.reply_to(ctx, resp_str)
end -- Run()
return M
posted on 2017-03-02 17:12
金慶
閱讀(472)
評(píng)論(0)
編輯
收藏
引用
所屬分類(lèi):
2. 網(wǎng)游開(kāi)發(fā)
只有注冊(cè)用戶(hù)
登錄
后才能發(fā)表評(píng)論。
相關(guān)文章:
How are dtLinks created in NavMesh
UE4 Blueprint Multiple Event BeginPlay
第9代游戲主機(jī)
Canvas Scaler 的3種模式
幀同步是否允許客戶(hù)端指定命令幀號(hào)
rpc應(yīng)答太快造成請(qǐng)求超時(shí)
測(cè)試 tolua 例子 TestErrorStack
lua變量缺少local造成unity死鎖
C# tolua 之間互傳 byte[]
Unity使用異步grpc
網(wǎng)站導(dǎo)航:
博客園
IT新聞
BlogJava
博問(wèn)
Chat2DB
管理
Powered by:
C++博客
Copyright © 金慶
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
正在播放欧美视频
|
噜噜噜噜噜久久久久久91
|
亚洲午夜av电影
|
亚洲精品一区在线观看香蕉
|
亚洲激情电影在线
|
日韩亚洲视频
|
亚洲一区在线免费观看
|
午夜视频久久久
|
久久午夜电影
|
亚洲经典视频在线观看
|
欧美国产一区视频在线观看
|
亚洲福利在线看
|
亚洲视频一区二区免费在线观看
|
日韩一区二区精品视频
|
亚洲欧美精品一区
|
美脚丝袜一区二区三区在线观看
|
欧美区日韩区
|
欧美性片在线观看
|
激情五月***国产精品
|
亚洲日本理论电影
|
午夜精品视频在线
|
欧美www视频
|
亚洲小说春色综合另类电影
|
久久一综合视频
|
国产精品日韩欧美一区
|
亚洲激情影院
|
久久久久久久激情视频
|
日韩视频永久免费观看
|
久久久久久久久久久久久女国产乱
|
欧美日韩三级电影在线
|
亚洲欧美日韩成人
|
毛片基地黄久久久久久天堂
|
国产精品久久综合
|
亚洲精品久久嫩草网站秘色
|
一区二区视频免费在线观看
|
中国成人在线视频
|
欧美顶级大胆免费视频
|
香蕉尹人综合在线观看
|
欧美亚州在线观看
|
99re这里只有精品6
|
免费在线观看成人av
|
亚洲欧美日韩在线不卡
|
欧美视频网址
|
一区二区三区不卡视频在线观看
|
欧美成人综合网站
|
久久女同精品一区二区
|
国产一区二区三区久久悠悠色av
|
亚洲欧美影院
|
一区二区三区精品
|
欧美三级电影大全
|
亚洲一区二区三区欧美
|
亚洲欧洲精品成人久久奇米网
|
久久精品久久99精品久久
|
国产亚洲欧美一区二区三区
|
久久国产精品久久精品国产
|
亚洲欧美另类在线
|
国产亚洲观看
|
久久综合九色九九
|
久久亚洲影院
|
亚洲精品少妇30p
|
亚洲日本乱码在线观看
|
欧美精品在线网站
|
中文无字幕一区二区三区
|
99re66热这里只有精品4
|
欧美日韩国产综合视频在线观看中文
|
亚洲精品乱码久久久久久日本蜜臀
|
欧美国产精品中文字幕
|
欧美国产免费
|
亚洲自拍16p
|
欧美一级大片在线免费观看
|
狠狠色丁香久久婷婷综合丁香
|
一区二区高清在线
|
亚洲欧洲在线免费
|
欧美视频四区
|
欧美制服丝袜
|
久热re这里精品视频在线6
|
亚洲国产精品欧美一二99
|
亚洲第一成人在线
|
欧美视频不卡
|
久久久久www
|
蜜桃精品久久久久久久免费影院
|
亚洲精品视频在线观看网站
|
亚洲另类春色国产
|
国产欧美日韩在线播放
|
久久婷婷国产麻豆91天堂
|
免费看成人av
|
午夜一区二区三视频在线观看
|
午夜在线观看欧美
|
欧美日韩你懂的
|
午夜在线成人av
|
久久久之久亚州精品露出
|
亚洲伦理在线
|
午夜久久久久久久久久一区二区
|
在线观看不卡av
|
日韩午夜av
|
在线不卡视频
|
中文有码久久
|
亚洲经典视频在线观看
|
亚洲一区免费在线观看
|
亚洲大胆视频
|
亚洲午夜极品
|
91久久精品久久国产性色也91
|
亚洲午夜伦理
|
日韩网站在线观看
|
久久超碰97人人做人人爱
|
一区二区欧美在线观看
|
久久精品在线
|
欧美在线一区二区三区
|
欧美日韩国产系列
|
欧美成年网站
|
国产亚洲欧美aaaa
|
中文精品在线
|
这里只有精品视频
|
欧美成人免费观看
|
狂野欧美性猛交xxxx巴西
|
国产精品日韩一区二区
|
亚洲免费电影在线
|
日韩亚洲欧美成人
|
欧美韩日视频
|
亚洲高清视频一区二区
|
黄色工厂这里只有精品
|
亚洲一区二区三区777
|
亚洲精品孕妇
|
欧美成人免费网站
|
欧美国产第一页
|
…久久精品99久久香蕉国产
|
99国产精品
|
欧美成人一区二免费视频软件
|
久久久久久久一区
|
国产乱人伦精品一区二区
|
一级成人国产
|
亚洲已满18点击进入久久
|
欧美破处大片在线视频
|
亚洲激情在线视频
|
日韩视频免费观看
|
欧美成人激情视频
|
亚洲精品视频在线观看免费
|
日韩亚洲欧美精品
|
欧美吻胸吃奶大尺度电影
|
99在线热播精品免费
|
亚洲自拍三区
|
国产美女精品在线
|
亚洲欧美日韩精品久久亚洲区
|
小黄鸭精品aⅴ导航网站入口
|
国产精品人人爽人人做我的可爱
|
国产精品99久久不卡二区
|
欧美精品一区三区
|
一区二区三区四区国产
|
亚洲欧美视频一区二区三区
|
国产精品丝袜白浆摸在线
|
另类av一区二区
|
亚洲成在线观看
|
欧美国产大片
|
亚洲少妇最新在线视频
|
欧美一区二区三区在线观看视频
|
国产亚洲欧美aaaa
|
欧美不卡三区
|
亚洲午夜av
|
久久米奇亚洲
|
日韩亚洲欧美高清
|
国产欧美一二三区
|
欧美 日韩 国产一区二区在线视频
|
亚洲精品美女在线
|
欧美在线视频观看
|
亚洲国产乱码最新视频
|
欧美视频一区二区三区
|
久久成人精品一区二区三区
|
亚洲高清成人
|
久久国产精品亚洲va麻豆
|
亚洲日本激情
|
国产欧美午夜
|
欧美片在线观看
|
久久久综合香蕉尹人综合网
|
99av国产精品欲麻豆
|
久久夜色精品国产噜噜av
|
亚洲视频精选
|
亚洲黄色视屏
|
国产一区在线视频
|
国产精品a久久久久久
|
米奇777超碰欧美日韩亚洲
|
午夜亚洲性色视频
|
夜夜嗨网站十八久久
|
免费观看日韩
|
先锋影院在线亚洲
|
日韩一级视频免费观看在线
|
国产色产综合色产在线视频
|
欧美精选在线
|
久久综合五月
|
欧美亚洲综合久久
|
亚洲精品三级
|
亚洲福利视频网
|
久久视频在线视频
|
西瓜成人精品人成网站
|
一本色道久久综合精品竹菊
|
一区免费观看
|
国产亚洲永久域名
|
国产精品美女久久久久久免费
|
欧美日韩国产成人在线
|
欧美 日韩 国产精品免费观看
|
欧美一区2区三区4区公司二百
|