首页 > 代码库 > share
share
GameServer号称游戏服务器,是整个服务器的控制其中驱动的东西很多,网络:DataLayer,接收所有map发到GS过来的包,从网络层接报,数据库:DB,数据库回调驱动,玩家:GameChannel,玩家接报,道具,帮会等定时保存,几个定时器管理,帮助GC发送未发送的数据,所有的工作都是在GS线程里面做的是名副其实的服务器跟GameServer同等重要的要数share了share做的东西也是相当的多,管理所有玩家通道,跨地图操作,所有地图操作这边有个很重要的继承就是GameServer继承Share,share到底是干啥的,这个问题由来已久,从我到公司就有了,一直搞不懂,以及GameServer和Share之间的区别,其实share就是上面的作用至于GS为什么从share继承,GS既然号称游戏服务器当然要驱动所有的东西,包括所有地图发送GS的包,玩家包至于这么晚才看懂,我只能说有点晚了。就像网络发包那块,磨了那么久至于发送失败的GC,send_stat hr = m_pDataLayer->SendData(m_nChannelId, pkt.pData, pkt.nSize);就是应该是共享内存分配不到内存了,然后放到等待队列中让GS去发送接下来就重点看看这些解包过程/** *对于商城,道具,组队,帮会都是跨地图的,所以不是写在map中 *对于为什么是跨地图的,在看看 */void Share::ProcMapSendData(){ for(auto itMap : m_mapMap) { MapPkt Pkt; try { for (;;) { if(!itMap.second->RecvData(Pkt)) break; if(Pkt.cmd == ms2gs_转client_cmd) { OnTurnToClient(Pkt.channelId, Pkt.data, Pkt.len);//从GS发送到客户端,至于这个为什么从GS发送,我记得map不是直接发送的吗 } else if(Pkt.cmd == ms2gs_json) { OnJson(Pkt.channelId, Pkt.data, Pkt.len);//据说这些都是在一个线程里面,因为他发包和收包都是在一个线程里面,包括相关操作,所以说在一个线程里面,这样说就是安全的 } else if(ms2gs_db_buff_info == Pkt.cmd)//保存数据库 { OnLeaveMap(Pkt.channelId, Pkt.data, Pkt.len); } else if(ms2gs_obj_leave == Pkt.cmd) //玩家切换地图 { OnEnterNewMap(Pkt.channelId, Pkt.data, Pkt.len); } else if(ms2gs_guild_opt == Pkt.cmd)//帮会操作 { m_spGuildOpt->OnGuildOpt(Pkt.channelId, Pkt.data, Pkt.len); } else if (ms2gs_prop_mgr == Pkt.cmd)//道具操作 { m_spPropManager->OnPropMgrOpt(Pkt.channelId, Pkt.data, Pkt.len); } else if (ms2ms_cmd == Pkt.cmd) { OnTurnToMap(Pkt.mapId, Pkt.data, Pkt.len); } else if (ms2gs_mall_opt == Pkt.cmd)//商城 { m_spMallOpt->OnMallOpt(Pkt.channelId, Pkt.data, Pkt.len); } else if (ms2gs_auction_opt == Pkt.cmd)//拍卖行 { m_spAuctionOpt->OnAuctionOpt(Pkt.channelId, Pkt.data, Pkt.len); } delete[] Pkt.data; Pkt.data = nullptr; } } catch(...) { char sErrMsg[256] = {0}; sprintf(sErrMsg, "【%s】ShareCenter:接收%d地图的 cmd = %d 指令时时出错!", __FUNCTION__, itMap.first, Pkt.cmd); ShuiHu::GetLogger()->Fatal(sErrMsg); safe::error_msg(sErrMsg); } }}
share
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。