再看GS接包过程
再看GS接包过程
bool GameServer::ProcessLoop(packet& rPkt)
{
if(false == m_spDataLayer->Recv(rPkt))
return true;//没数据了 if(rPkt.is_data)
{
if(!rPkt.data)
return false; GameChannel* pGC = m_vecChannel[rPkt.channel_id];
if(pGC)
pGC->OnReceiveData(rPkt.data, rPkt.size);//回调GC中相关函数 m_LiveMgr.OnLive(rPkt.channel_id);
}
else
{
//网络事件
link_stat stat = (link_stat)rPkt.size;
if (stat == link_stat::link_connected)
{
GameChannel* pNewGC = new GameChannel();
pNewGC->m_nChannelId = rPkt.channel_id;
pNewGC->m_pDataLayer = m_spDataLayer.get();//m_pDataLayer,GC直接发包到客户端
pNewGC->m_pShare = this;
pNewGC->m_pAsynDBC = this->m_spAsynDBC.get();//GC直接跟数据库打交道 m_vecChannel[rPkt.channel_id] = pNewGC;
m_LiveMgr.Add(rPkt.channel_id);
}
else if (stat == link_stat::link_disconnected || stat == link_stat::link_connect_failed )
{
GameChannel* pDisconnectGC = m_vecChannel[rPkt.channel_id];
if (pDisconnectGC)
{
//如果进入了地图,保存人物信息时会调用push_freeQueue + 滞空m_Channels[channel_id],
pDisconnectGC->OnDisconnect();//做人物下线收尾工作,该通知map,数据库访问操作,等,根据玩家的状态来 //如果未进地图就下线,直接断开;不用保存角色详细数据,可直接放入释放队列中
if (!pDisconnectGC->m_pMap)//如果进入地图需要从map返回数据然后保存数据库
{
AutoFreeGC(pDisconnectGC);//如果没有数据库访问直接释放,或者放到队列等无数据库访问在释放
}
}
m_LiveMgr.Remove(rPkt.channel_id);
}
}
return false;
}
再看GS接包过程的更多相关文章
- 再看GS线程
再看GS线程 void GameServer::ProcessThreadTry() { ; packet rcvPkt; rcvPkt.data = * ]; //该事件工厂主要创建了两个定时器1. ...
- 代码学习-Linux内核网卡收包过程(NAPI)【转】
转自:https://blog.csdn.net/crazycoder8848/article/details/46333761 版权声明:本文没有任何版权限制,任何人可以以任何方式使用本文. htt ...
- mysql索引设计的注意事项(大量示例,收藏再看)
mysql索引设计的注意事项(大量示例,收藏再看) 目录 一.索引的重要性 二.执行计划上的重要关注点 (1).全表扫描,检索行数 (2).key,using index(覆盖索引) (3).通过ke ...
- 再看Ajax
再回顾Ajax相关的内容,再次梳理学习还是很有必要的,尤其是实际的开发中,ajax更是必不可少,仔细学习以便避免不必要的错误. 文章导读: --1.使用XMLHttpRequest---------- ...
- perf使用的问题,再看perf record,perf record 设置的采样频率,采样频率是如何体现在
当perf stat -e branches 是统计 再看perf record,perf record是为了是记录时间发生的时候的调用栈, 在我的测试代码中总共有200,000,000条branch ...
- 记录centos7下tomcat部署war包过程
记录centos7下tomcat部署war包过程 1.官网下载tomcat安装包.gz结尾的 2.上传到/usr/local/ ,并解压到tomcat目录下 3.进入tomcat/bin目录,运行./ ...
- linux网络收包过程
记录一下linux数据包从网卡进入协议栈的过程,不涉及驱动,不涉及其他层的协议处理. 内核是如何知道网卡收到数据的,这就涉及到网卡和内核的交互方式: 轮询(poll):内核周期性的检查网卡,查看是否收 ...
- 再看ftp上传文件
前言 去年在项目中用到ftp上传文件,用FtpWebRequest和FtpWebResponse封装一个帮助类,这个在网上能找到很多,前台使用Uploadify控件,然后在服务器上搭建Ftp服务器,在 ...
- 再看 AspriseOCR - OCR应用开发 -20151124
再看 AspriseOCR - OCR应用开发 我写这个博文时间为 2015/11/24日,注意时间因为,网上很多文章时间上很久远,有的已经不能参考了 很多人面对从图片中识别文字或者数字0~9 A~ ...
随机推荐
- springBoot 快捷键
设置idea导入包 勾选标注 2 选项,IntelliJ IDEA 将在我们书写代码的时候自动帮我们优化导入的包,比如自动去掉一些没有用到的包. 勾选标注 1 选项,IntelliJ IDEA 将在我 ...
- 深入Java数据类型
Java的数据类型分为两大类,一类是基本数据类型,还有一类就是引用数据类型. 1.基本数据类型 Java一共有8种基本数据类型,分别是byte,short,int,long,float,double, ...
- Codeforces Round #298 (Div. 2) A、B、C题
题目链接:Codeforces Round #298 (Div. 2) A. Exam An exam for n students will take place in a long and nar ...
- Using Find_Alert and Show_Alert in Oracle Forms
Show_alert is used to display model window messages in Oracle Forms and Find_alert searches the list ...
- 鼠标悬浮弹出标题制作JQuery
今天给客户制作的网站里面加个效果,当鼠标在列表图片之外时,标题不显示,当鼠标悬浮在图片之上时,标题从底部弹出. 效果图如下: 鼠标悬浮前: 鼠标悬浮后: html代码如下: <ul class= ...
- JSON API:用 JSON 构建 API 的标准指南中文版
译文地址:https://github.com/justjavac/json-api-zh_CN 假设你和你的团队以前争论过使用什么方式构建合理 JSON 响应格式, 那么 JSON API 就是你的 ...
- 终于会用c#中的delegate(委托)和event(事件)了 [转]
原文 : http://www.cnblogs.com/zhangchenliang/archive/2012/09/19/2694430.html 一.开篇忏悔 对自己最拿手的编程语言C#,我想对你 ...
- AngularJS的添加操作和列表操作
代码下载:https://files.cnblogs.com/files/xiandedanteng/agsAddList.rar 添加成员页面图示: 添加成员页面代码: <%@ page la ...
- HDU 5301(Buildings-贪心构造)
Buildings Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others) Tota ...
- cocos2d-x 3.0 内存管理机制
***************************************转载请注明出处:http://blog.csdn.net/lttree************************** ...