GS网络连接事件
//网络事件
//这个事件是在libevent里面的收到的事件就是在那个listen里面,就是客户端打开,服务器收到通知
link_stat stat = (link_stat)rPkt.size;
if (stat == link_stat::link_connected)
{
GameChannel* pNewGC = new GameChannel();
m_vecChannel[rPkt.channel_id] = pNewGC;//m_vecChannel玩家channel,GS是控制所有玩家即channel的
pNewGC->m_nChannelId = rPkt.channel_id;
pNewGC->m_pDataLayer = m_spDataLayer.get();//channel有可能直接向网络层发数据
pNewGC->m_pShare = this;//channel需要这个,难道是需要其他用户的一些信息?
pNewGC->m_pAsynDBC = this->m_spAsynDBC.get();//channel需要访问数据库
//gc->m_db = this->m_asyndb->getSynDBptr();//把地址复制一份给GameChannel::m_db,让其具有数据库操作权
m_LiveMgr.Add(rPkt.channel_id);
} GameChannel::GameChannel()
{
//namespace ph = ph;
m_UserId = -;
m_ActorId = -;
m_pUserInfo = NULL;
m_pActiveActor = NULL; m_pMap = NULL;
m_eGameState = eGameState_OnlyConnect;
m_uDBGetAskRefCount = ; //数据库绑定,数据库通过function回调这里面的函数
m_fnGetUserID = std::bind(&GameChannel::ProcessGetUserID, this, ph::_1);
m_fnGetUserInfo = std::bind(&GameChannel::ProcessGetUserInfo, this, ph::_1);
m_fnGetActorInfos = std::bind(&GameChannel::ProcessGetActorInfos, this, ph::_1);
m_fnGetActorInfoEx = std::bind(&GameChannel::ProcessGetActorInfoEx, this, ph::_1, ph::_2);
m_fnGetActorInfo = std::bind(&GameChannel::ProcessGetActorInfo, this, ph::_1, ph::_2);
m_fnGetRobotID = ([this](int robotID)
{
m_UserId = ;//注意:压测的机器人专用。
m_pAsynDBC->GetActorInfoEx(&m_fnGetActorInfoEx, robotID);
++m_uDBGetAskRefCount;
});
m_fnAddActor = std::bind(&GameChannel::ProcessAddActor, this, ph::_1, ph::_2, ph::_3); //通过function调用本模块的函数,其实也是函数指针的用法
m_mapPktAnalysis[c2s_start] = std::bind(&GameChannel::OnStart, this, ph::_1, ph::_2);
m_mapPktAnalysis[c2s_json] = std::bind(&GameChannel::OnJson, this, ph::_1, ph::_2);
m_mapPktAnalysis[c2s_on_live] = [this](void* pData, int nLen){return true;};
m_mapPktAnalysis[c2s_login] = std::bind(&GameChannel::OnLogin, this, ph::_1, ph::_2);
m_mapPktAnalysis[c2s_select_actor] = [this](void* data, int len){return OnStart(data, len);};
m_mapPktAnalysis[c2s_message_talk] = std::bind(&GameChannel::OnMessageTalk, this, ph::_1, ph::_2);
m_mapPktAnalysis[c2s_check_version] = std::bind(&GameChannel::OnCheckVersion, this, ph::_1, ph::_2);
}

GS连接事件的更多相关文章

  1. 低功耗蓝牙BLE之连接事件、连接参数和更新方法

    转自:http://blog.csdn.net/zzfenglin/article/details/51304084 连接事件 在一个连接当中,主设备会在每个连接事件里向从设备发送数据包.一个连接事件 ...

  2. ASP.NET SignalR 系列(六)之连接事件

    本章主要介绍下SignalR自带的连接事件 其实再前面的示例中,有出现了一些事件的重载,比如 public override Task OnConnected() 下面简单介绍一下SignalR提供了 ...

  3. Grid++repor报表连接事件

    //定义报表模板 private GridppReport Report = new GridppReport(); //载入报表模板数据 Report.LoadFromFile(GridppRepo ...

  4. DataSnap 的连接事件顺序图

    无意看到这两幅图,虽然已经了解,还是转一份保留以备后用

  5. Nginx 多进程连接请求/事件分发流程分析

    Nginx使用多进程的方法进行任务处理,每个worker进程只有一个线程,单线程循环处理全部监听的事件.本文重点分析一下多进程间的负载均衡问题以及Nginx多进程事件处理流程,方便大家自己写程序的时候 ...

  6. SuperSocket获取会话的连接和断开事件

    关键字: 连接事件, 断开事件, OnSessionStarted,OnSessionClosed, NewSessionConnected, SessionClosed AppSession 的虚方 ...

  7. 利用epoll写一个"迷你"的网络事件库

    epoll是linux下高性能的IO复用技术,是Linux下多路复用IO接口select/poll的增强版本,它能显著提高程序在大量并发连接中只有少量活跃的情况下的系统CPU利用率.另一点原因就是获取 ...

  8. WPF快速入门系列(3)——深入解析WPF事件机制

    一.引言 WPF除了创建了一个新的依赖属性系统之外,还用更高级的路由事件功能替换了普通的.NET事件. 路由事件是具有更强传播能力的事件——它可以在元素树上向上冒泡和向下隧道传播,并且沿着传播路径被事 ...

  9. Redis设计与实现-客户端服务端与事件

    事件 redis服务器是事件驱动的,事件分为文件事件与时间事件 文件事件是服务器通过套接字与客户端连接,两者之间的通信会产生相应的文件事件,服务器监听并处理这些事件完成网络操作: 时间事件是指redi ...

随机推荐

  1. PHP二维数组根据某个键名排序

    $result = array( array(           "amount": "11.00",           "date": ...

  2. 一款jQuery满屏自适应焦点图切换特效

    一款jQuery满屏自适应焦点图切换特效 ,自适应当前浏览器的宽度,可以作为网站整个大背景的却换效果,很不错的一款不jquery特效. 兼容性没的说直接秒杀了IE6.适用浏览器:IE6.IE7.IE8 ...

  3. dedecms5.7 联动类型无法显示

    dedecms5.7 联动类型无法显示 问题原因:一般是由于路径问题( 路径缺少分隔符'/' )导致js无法正常加载 如果遇到该类问题,尝试通过firebug工具检查js是否被正确加载. 如果是路径问 ...

  4. lua进阶(二)

    第五章 函数 函数有两种用途:1.完成指定的任务,这种情况下函数作为调用语句使用:2.计算并    返回值,这种情况下函数作为赋值语句的表达式使用. function function_name( . ...

  5. Generate List and Table via ng-repeat

    <div ng-app ng-controller='StudentListController'> <ul> <li ng-repeat='student in stu ...

  6. STM32F0xx_GPIO配置详细过程

    前言 对于初学STM32的人来说,很多基础的知识没有掌握,这些基础知识就成为阻挡他们入门的门槛.因此,今天也把基础的知识分享出来,带领那些还没有迈过这个门槛的人入门. 今天总结“GPIO配置详细”,以 ...

  7. opengl基础学习专题 (三) 多边形绘制的几种样式

    题外话 聪明人之所以不会成功,是由于他们缺乏坚韧的毅力. ——艾萨克·牛顿(1643年1月4日—1727年3月31日)英国 也许可以理解为 想更深一步的时候,坚持,努力和聪明缺一不可. 挺直腰杆在此向 ...

  8. Spring IOC 方式结合TESTGN测试用例,测试简单java的命令模式

    java命令模式: 可以命令("请求")封装成一个对象,一个命令对象通过在特定的接收着上绑定一组动作来封装一个请求.命令对象直接把执行动作和接收者包进对象中,只对外暴露出执行方法的 ...

  9. Windows Phone8.1 SDK中的新控件

    前言      WP8.1对开发者的影响要远大于对用户的影响.这篇博客就来一起看看哪些WP8.0中的控件被移除或替换,这些控件的介绍在MSDN上都非常的详细,所以这里只给出一些简单的介绍,来对比8.1 ...

  10. ios中用drawRect方法绘图的时候设置颜色

    设置画笔颜色可以直接 [[UIColor grayColor] set];就可以设置颜色.