的笔记

随时随地编辑

Skynet扯淡大杂烩

第一棵蛋

  • 每个snlua服务对应一个lua状态机
  • 每个消息对应一个coroutine
  • --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.
  • skynet.call
  • skynet.response


  • 再一对好基友

    resume和yield也是一对好基友。reume和yield分别在2个代码快A和B中。协程穿越者W是一个隐形的码灵,它按顺序一行一行的执行当前lua代码,在A和B代码块中来回穿针引线。码灵不是时空跳跃者,它只是穿行,不会在某处就消失掉。 它要么在代码块A中,要么就在代码块B中,每次穿越,嘴里都衔着上一个时空的口袋(实参),丢到当前的时空。当然口袋里可能是空的。
  • 一开始coroutine(主函数co_main)是挂起的
  • 首先A resume(...),A立即挂起到A1,码灵背着口袋去到B,B开始从co_main执行, 其实参正是resume(...)传入的值
  • B继续走,遇到yiled(...)就停住了,挂起到B1
  • 码灵从B1门回到A 的A1门,A1门关闭
  • 码灵在A中继续走,遇到resume,停下来开了一道门A2
  • 码灵从A的A2门进到B中的B1门,B1门关闭
  • 码灵在B中继续走,遇到yield停住,又开了个B2门
  • 这样周而复始,在时空A和时空B中每次都会有另外一个空间的门开着,当前空间遇到停住,就打开门进到对方时空。
  •  

    这淡扯得有点离谱啊!




    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开始



    <占位标题>

    <占位描述占位描述占位描述占位描述占位描述占位描述占位描述占位描述占位描述占位描述占位描述占位描述占位描述占位描述占位描述占位描述>
  • <占位项1>
  • <占位项2>


  • <占位标题>

    <占位描述占位描述占位描述占位描述占位描述占位描述占位描述占位描述占位描述占位描述占位描述占位描述占位描述占位描述占位描述占位描述>
  • <占位项1>
  • <占位项2>


  • <占位标题>

    <占位描述占位描述占位描述占位描述占位描述占位描述占位描述占位描述占位描述占位描述占位描述占位描述占位描述占位描述占位描述占位描述>
  • <占位项1>
  • <占位项2>


  • <占位标题>

    <占位描述占位描述占位描述占位描述占位描述占位描述占位描述占位描述占位描述占位描述占位描述占位描述占位描述占位描述占位描述占位描述>
  • <占位项1>
  • <占位项2>


  • <占位标题>

    <占位描述占位描述占位描述占位描述占位描述占位描述占位描述占位描述占位描述占位描述占位描述占位描述占位描述占位描述占位描述占位描述>
  • <占位项1>
  • <占位项2>

  • posted on 2018-06-03 19:12 的笔记 阅读(24) 评论(0)  编辑 收藏 引用


    只有注册用户登录后才能发表评论。
    【推荐】超50万行VC++源码: 大型组态工控、电力仿真CAD与GIS源码库
    网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理