第一棵蛋
每個(gè)snlua服務(wù)對(duì)應(yīng)一個(gè)lua狀態(tài)機(jī)
每個(gè)消息對(duì)應(yīng)一個(gè)coroutine
--skynet.raw_dispatch_message
-- 每個(gè)消息都創(chuàng)建一個(gè)coroutine
local co = co_create(f)
suspend(co, coroutine.resume(co, session,source, p.unpack(msg,sz, ...)))
一對(duì)好基友
call和response是一對(duì)好基友,服務(wù)A 調(diào)用call方法到服務(wù)B后, 服務(wù)B要應(yīng)答時(shí)調(diào)用response+結(jié)果R即可,這個(gè)時(shí)候服務(wù)A中的call返回,返回就是結(jié)果R.
skynet.call
skynet.response
再一對(duì)好基友
resume和yield也是一對(duì)好基友。reume和yield分別在2個(gè)代碼快A和B中。協(xié)程穿越者W是一個(gè)隱形的碼靈,它按順序一行一行的執(zhí)行當(dāng)前l(fā)ua代碼,在A和B代碼塊中來(lái)回穿針引線。碼靈不是時(shí)空跳躍者,它只是穿行,不會(huì)在某處就消失掉。
它要么在代碼塊A中,要么就在代碼塊B中,每次穿越,嘴里都銜著上一個(gè)時(shí)空的口袋(實(shí)參),丟到當(dāng)前的時(shí)空。當(dāng)然口袋里可能是空的。
一開始coroutine(主函數(shù)co_main)是掛起的
首先A resume(...),A立即掛起到A1,碼靈背著口袋去到B,B開始從co_main執(zhí)行, 其實(shí)參正是resume(...)傳入的值
B繼續(xù)走,遇到y(tǒng)iled(...)就停住了,掛起到B1
碼靈從B1門回到A 的A1門,A1門關(guān)閉
碼靈在A中繼續(xù)走,遇到resume,停下來(lái)開了一道門A2
碼靈從A的A2門進(jìn)到B中的B1門,B1門關(guān)閉
碼靈在B中繼續(xù)走,遇到y(tǒng)ield停住,又開了個(gè)B2門
這樣周而復(fù)始,在時(shí)空A和時(shí)空B中每次都會(huì)有另外一個(gè)空間的門開著,當(dāng)前空間遇到停住,就打開門進(jìn)到對(duì)方時(shí)空。
這淡扯得有點(diǎn)離譜啊!
rapidjson來(lái)一蛋
先在skynet里這樣定義一個(gè)table
-------------------------------------------------
{
{ id = 1, name = "map1", ip = "127.0.0.1", port = "5555" },
{ id = 2, name = "map2", ip = "127.0.0.2", port = "5556" },
}
然后在client這樣解析:
-------------------------------------------------
Document document;
document.Parse(params.c_str());
if(!document.HasMember("maps"))
return;
Value map = document["maps"].GetObject();
for(Value::ConstMemberIterator itr = map.MemberBegin(); itr != map.MemberEnd(); ++itr)
{
}
問題來(lái)了:
1.只能解析到id=2的table出來(lái)
2.再追加個(gè)id=3,就地址異常了。
解決
ID從0開始
這蛋甚是無(wú)味
好像是sproto中如果type被用作數(shù)組類型,必須第一個(gè)字段是id,后面填充的時(shí)候也要從0開始
<占位標(biāo)題>
<占位描述占位描述占位描述占位描述占位描述占位描述占位描述占位描述占位描述占位描述占位描述占位描述占位描述占位描述占位描述占位描述>
<占位項(xiàng)1>
<占位項(xiàng)2>
<占位標(biāo)題>
<占位描述占位描述占位描述占位描述占位描述占位描述占位描述占位描述占位描述占位描述占位描述占位描述占位描述占位描述占位描述占位描述>
<占位項(xiàng)1>
<占位項(xiàng)2>
<占位標(biāo)題>
<占位描述占位描述占位描述占位描述占位描述占位描述占位描述占位描述占位描述占位描述占位描述占位描述占位描述占位描述占位描述占位描述>
<占位項(xiàng)1>
<占位項(xiàng)2>
<占位標(biāo)題>
<占位描述占位描述占位描述占位描述占位描述占位描述占位描述占位描述占位描述占位描述占位描述占位描述占位描述占位描述占位描述占位描述>
<占位項(xiàng)1>
<占位項(xiàng)2>
<占位標(biāo)題>
<占位描述占位描述占位描述占位描述占位描述占位描述占位描述占位描述占位描述占位描述占位描述占位描述占位描述占位描述占位描述占位描述>
<占位項(xiàng)1>
<占位項(xiàng)2>