找回密码
 用户注册

QQ登录

只需一步,快速开始

楼主: freeeyes

ACE开源服务器研究(SVN和git版本持续更新中)

 火... [复制链接]
发表于 2011-3-1 19:20:59 | 显示全部楼层
lz在最新的代码中
MemoryPools.cpp:70: 错误:从 ‘_MemoryList*’ 到 ‘unsigned int’ 的转换损失精度
MemoryPools.cpp:71: 错误:从 ‘_MemoryBlock*’ 到 ‘unsigned int’ 的转换损失精度

我是64位的linux
 楼主| 发表于 2011-3-2 09:34:22 | 显示全部楼层
感谢以上朋友的支持,以上部分的问题我都会在下个版本予以解决。
发表于 2011-3-2 11:06:23 | 显示全部楼层
谢谢freeeyes的代码,已经从头到尾深入研究了
发表于 2011-3-4 21:52:57 | 显示全部楼层
本帖最后由 djoin 于 2011-3-4 22:01 编辑

楼主:
hhjj6363  说的是问题之一
问题之二是:假如当我服务器接收到另个服务器的数据,这时我想把接收到的数据转发给连接上本服务器的客户端1,这个时候,CProConnectHandle里没有调用CheckMessage()函数( m_nIOCount就没有++)
但是却调用了PutSendPacket(。。)函数,这样就会产生把数据发送出去,这个客户端1就被服务器给关闭了现象
 楼主| 发表于 2011-3-7 09:37:44 | 显示全部楼层
十分感谢各位的关注,各位的意见将是我前进的动力。
上周忙于工作,这周开始修改以前的BUG,并解决以上的问题,另外大家谁有觉得不好使或者BUG或者意见之类的,请在这里留言,我会一一改进。
发表于 2011-3-7 18:43:41 | 显示全部楼层
本帖最后由 laja 于 2011-3-7 20:28 编辑
  1. void CAceReactor::Close()
  2. {
  3.         if(NULL != m_pReactor)
  4.         {
  5.                 m_pReactor->close();
  6.                 delete m_pReactor;  //  <----------------这里在服务中断时有时会有 Segment fault
  7.                 m_pReactor = NULL;
  8.         }
  9.         m_nReactorType = 0;
  10.         m_nThreadCount = 0;
  11.         m_blRun        = false;
  12. }
复制代码
另外,int CAceReactor::svc()  会在delete m_pReacto后调用...
发表于 2011-3-11 17:04:48 | 显示全部楼层
本帖最后由 arrow8209 于 2011-3-13 20:20 编辑

版主你可以在google上建一个版本管理器吗。学习的朋友可以很方便的学习,而且我们还可以通过你的查看日志,更好的了解这个框架。如果有一个UML图更好。没有UML图看起来有点麻烦。
您现在的框架支持“中间服务器”,这部分看我的有点晕乎乎的,纯粹是个人建议,能不能吧框架进行 拆分,分成两个部分,一个是ACCEPTOR一个是CONNECTOR,这样我们就可以更好的专注于逻辑业务的开发,而且更多的时候作为CONNECTOR我连链接的服务器不一定就我自己写的服务器,我们接收的数据形式可能千奇百怪,这时候在使用您现在写的数据分包的方式就没法适用了。
 楼主| 发表于 2011-3-15 09:42:57 | 显示全部楼层
等我的版本测试BUG基本差不多了,还有我的帮助文档也写的差不多了,能够给大家帮助的时候,我就会把这些代码上传到google上。以上的问题,我都会针对性的修改和完善。
发表于 2011-3-16 15:32:59 | 显示全部楼层
版主你可以在google上建一个版本管理器吗。学习的朋友可以很方便的学习,而且我们还可以通过你的查看日志, ...
arrow8209 发表于 2011-3-11 17:04
确实
发表于 2011-3-21 13:38:55 | 显示全部楼层
bool CProServerManager::Close()
{
        OUR_DEBUG((LM_INFO, "[CServerManager::Close]Close begin....\n"));
        App_MakePacket::instance()->Close();
        OUR_DEBUG((LM_INFO, "[App_MessageService::Close]Close App_MakePacket OK.\n"));
        App_MessageService::instance()->Close();
        OUR_DEBUG((LM_INFO, "[App_MessageService::Close]Close App_MessageService OK.\n"));
        App_TimerManager::instance()->close();
        App_ProConnectManager::instance()->CloseAll();
        OUR_DEBUG((LM_INFO, "[CServerManager::Close]Close App_ConnectManager OK.\n"));
        App_ClientProConnectManager::instance()->Close();
        OUR_DEBUG((LM_INFO, "[CServerManager::Close]Close App_ClientReConnectManager OK.\n"));
        AppLogManager::instance()->Close();
        OUR_DEBUG((LM_INFO, "[CServerManager::Close]AppLogManager OK\n"));
        App_ProactorManager::instance()->StartProactor();
        OUR_DEBUG((LM_INFO, "[CServerManager::Close]Close App_ReactorManager OK.\n"));       
        OUR_DEBUG((LM_INFO, "[CServerManager::Close]Close end....\n"));

        return true;
}

此处的App_ProactorManager::instance()->StartProactor();是否为笔误??应该改为:
App_ProactorManager::instance()->StopProactor();并且日志记录的信息也是不对的。
您需要登录后才可以回帖 登录 | 用户注册

本版积分规则

Archiver|手机版|小黑屋|ACE Developer ( 京ICP备06055248号 )

GMT+8, 2024-5-16 08:51 , Processed in 0.017246 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表