• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            的筆記

            隨時隨地編輯

            Skynet扯淡大雜燴

            第一棵蛋

          1. 每個snlua服務對應一個lua狀態機
          2. 每個消息對應一個coroutine
          3. --skynet.raw_dispatch_message
            -- 每個消息都創建一個coroutine
            local co = co_create(f)
            suspend(co, coroutine.resume(co, session,source, p.unpack(msg,sz, ...)))
            


            一對好基友

            call和response是一對好基友,服務A 調用call方法到服務B后, 服務B要應答時調用response+結果R即可,這個時候服務A中的call返回,返回就是結果R.
          4. skynet.call
          5. skynet.response


          6. 再一對好基友

            resume和yield也是一對好基友。reume和yield分別在2個代碼快A和B中。協程穿越者W是一個隱形的碼靈,它按順序一行一行的執行當前lua代碼,在A和B代碼塊中來回穿針引線。碼靈不是時空跳躍者,它只是穿行,不會在某處就消失掉。 它要么在代碼塊A中,要么就在代碼塊B中,每次穿越,嘴里都銜著上一個時空的口袋(實參),丟到當前的時空。當然口袋里可能是空的。
          7. 一開始coroutine(主函數co_main)是掛起的
          8. 首先A resume(...),A立即掛起到A1,碼靈背著口袋去到B,B開始從co_main執行, 其實參正是resume(...)傳入的值
          9. B繼續走,遇到yiled(...)就停住了,掛起到B1
          10. 碼靈從B1門回到A 的A1門,A1門關閉
          11. 碼靈在A中繼續走,遇到resume,停下來開了一道門A2
          12. 碼靈從A的A2門進到B中的B1門,B1門關閉
          13. 碼靈在B中繼續走,遇到yield停住,又開了個B2門
          14. 這樣周而復始,在時空A和時空B中每次都會有另外一個空間的門開著,當前空間遇到停住,就打開門進到對方時空。
          15.  

            這淡扯得有點離譜啊!




            rapidjson來一蛋

            先在skynet里這樣定義一個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)
            {
            }
            
            問題來了:
            1.只能解析到id=2的table出來
            2.再追加個id=3,就地址異常了。

            解決

            ID從0開始

            這蛋甚是無味

            好像是sproto中如果type被用作數組類型,必須第一個字段是id,后面填充的時候也要從0開始



            <占位標題>

            <占位描述占位描述占位描述占位描述占位描述占位描述占位描述占位描述占位描述占位描述占位描述占位描述占位描述占位描述占位描述占位描述>
          16. <占位項1>
          17. <占位項2>


          18. <占位標題>

            <占位描述占位描述占位描述占位描述占位描述占位描述占位描述占位描述占位描述占位描述占位描述占位描述占位描述占位描述占位描述占位描述>
          19. <占位項1>
          20. <占位項2>


          21. <占位標題>

            <占位描述占位描述占位描述占位描述占位描述占位描述占位描述占位描述占位描述占位描述占位描述占位描述占位描述占位描述占位描述占位描述>
          22. <占位項1>
          23. <占位項2>


          24. <占位標題>

            <占位描述占位描述占位描述占位描述占位描述占位描述占位描述占位描述占位描述占位描述占位描述占位描述占位描述占位描述占位描述占位描述>
          25. <占位項1>
          26. <占位項2>


          27. <占位標題>

            <占位描述占位描述占位描述占位描述占位描述占位描述占位描述占位描述占位描述占位描述占位描述占位描述占位描述占位描述占位描述占位描述>
          28. <占位項1>
          29. <占位項2>

          30. posted on 2018-06-03 19:12 的筆記 閱讀(656) 評論(0)  編輯 收藏 引用

            精品伊人久久大线蕉色首页| 婷婷五月深深久久精品| 91精品国产91久久久久久| 国内精品久久久久久中文字幕| 九九久久精品无码专区| 国产一区二区久久久| 久久久久久国产精品免费无码 | 久久久www免费人成精品| 国产91久久精品一区二区| 久久亚洲国产成人影院网站 | 99久久免费国产精品| 久久久久亚洲AV无码观看| 国产一区二区精品久久岳| 久久国产精品一国产精品金尊| 午夜肉伦伦影院久久精品免费看国产一区二区三区 | 久久精品中文字幕无码绿巨人 | 久久强奷乱码老熟女| 久久久久国产精品| 亚洲国产欧洲综合997久久| 亚洲国产精品无码久久青草| 亚洲国产成人久久综合一| 99久久婷婷国产综合亚洲| 色欲av伊人久久大香线蕉影院 | 久久精品国产亚洲AV无码麻豆| 国内精品欧美久久精品| 国产AⅤ精品一区二区三区久久| 久久精品国产亚洲AV影院| 一本久久综合亚洲鲁鲁五月天| 伊人久久大香线焦综合四虎| 韩国无遮挡三级久久| 91精品国产综合久久久久久| 国产精品一区二区久久不卡| 日本欧美久久久久免费播放网| 狠狠色婷婷久久一区二区| 久久人人爽人人爽人人av东京热| 亚洲国产日韩欧美久久| 久久大香萑太香蕉av| 久久久无码精品亚洲日韩京东传媒 | 久久精品中文字幕有码| 久久精品国产精品亚洲下载| 欧美成a人片免费看久久|