请yunfan解惑,接收的消息类型
我大概看了一下EvaPacketManager::processReceiveIM()这个函数有几个地方不明白,在switch里面
case QQ_RECV_IM_TO_BUDDY:是来自好友的消息,这里为什么没有操作
另外还有几个case也没有操作,比如
case QQ_RECV_IM_CREATE_QUN:
case QQ_RECV_IM_ADDED_TO_QUN:
case QQ_RECV_IM_DELETED_FROM_QUN:
case QQ_RECV_IM_REQUEST_JOIN_QUN:
case QQ_RECV_IM_APPROVE_JOIN_QUN:
是没有完成还是不需要反应,这些case是指的哪些情况。
Re: 请yunfan解惑,接收的消息类型
我大概看了一下EvaPacketManager::processReceiveIM()这个函数有几个地方不明白,在switch里面
case QQ_RECV_IM_TO_BUDDY:是来自好友的消息,这里为什么没有操作
另外还有几个case也没有操作,比如
case QQ_RECV_IM_CREATE_QUN:
case QQ_RECV_IM_ADDED_TO_QUN:
case QQ_RECV_IM_DELETED_FROM_QUN:
case QQ_RECV_IM_REQUEST_JOIN_QUN:
case QQ_RECV_IM_APPROVE_JOIN_QUN:
是没有完成还是不需要反应,这些case是指的哪些情况。
8O , 你看看这个
switch(A){
case 1:
process1();
break;
case 2:
process2();
break;
default:
}
和
switch(A){
case 1:
case 2:
process12();
break;
default:
}
有什么区别。 :? 哦,我明白了,是我疏忽了,没有 break下面的过程也会被执行,谢谢yunfan。 还有一个登录令牌的问题,最新版的eva
void EvaMain::slotConnectReady( )
{
packetManager->doLogin();
}
也就是直接登录了,你在介绍libeva登录方法的时候,过程是
EvaPacketManager::doRequestLoginToken()
得到返回后再
EvaPacketManager::processRequestLoginTokenReply()
最后才是
EvaPacketManager::doLogin()
你又说只在3.0pre里才行,我是这么理解的,后面的版本已经不需要登录令牌了,是协议变动了么?我没找到这个步骤。 我写的eva工作过程,图的次序放错了 不是的, 登录令牌是需要的, 但是只用获取一次。
如果登录是中转的情况, 那么直接登录就可以了, 不用再次获取登录令牌。 谢谢,我找到这个步骤了。
void EvaPacketManager::doLogin()
{
if(! Packet::isLoginTokenSet())//这就是要求登录令牌吧
{
doRequestLoginToken();
return;
}
unsigned char mode = QQ_LOGIN_MODE_INVISIBLE;
if(user->getStatus() == EvaUser::Eva_Online)
mode = QQ_LOGIN_MODE_NORMAL;
Packet::setPasswordKey((unsigned char *)(user->getMd5Password()));
connecter->append(new LoginPacket(mode));
} 恩, 对的。
页:
[1]