再看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~ ...
随机推荐
- LeetCode OJ--Word Search **
https://oj.leetcode.com/problems/word-search/ 类似于在棋盘上走步,走过的地方不能再走,每次都可以走当前位置的上.下.左.右,问能不能走出要求的形状来. 深 ...
- 2016北京集训测试赛(十七)Problem C: 数组
Solution 线段树好题. 我们考虑用last[i]表示\(i\)这个位置的颜色的上一个出现位置. 考虑以一个位置\(R\)为右端点的区间最远能向左延伸到什么位置: \(L = \max_{i \ ...
- Data structure basics - Java Implementation
Stack & Queue Implementations FixedCapacityQueue package cn.edu.tsinghua.stat.mid_term; import j ...
- PHP如何在页面中原样输出HTML代码
字符串与HTML之间的相互转换主要应用htmlentities()函数来完成. header("Content-Type: text/html; charset=utf-8"); ...
- ZFS -世界上最高级的文件系统之一
https://www.oschina.net/news/44302/openzfs_launch_announcement https://en.wikipedia.org/wiki/ZFS ZFS ...
- CI框架基础知识
调用一个视图 a.调用一个视图 $this->load->view('视图文件名'); b.调用多个视图 $this->load->view('index_h'); $this ...
- GLSL纹理贴图 【转】
转载:http://blog.csdn.net/hgl868/article/details/7872466 简单的纹理贴图(Simple Texture) 为了在GLSL中应用纹理,我们需要访问每个 ...
- OSG+VS2010+win7环境搭建 (转)
OSG+VS2010+win7环境搭建 Win7下 osg+vs2010环境搭建 一.相关准备 a) Osg源码 当前最新版:OpenSceneGraph的3.0.0.zip 下载链接: http:/ ...
- js CacheQueue
(function(){ var CacheQueue=function(name,weightValue,maxLength,clearTimerTime){ //public this.name ...
- linux中expr用法
名称:expr ### 字串长度 shell>> expr length "this is a test" 14 ### 数字商数 shell>> ...