/// <summary>发送接收信息回复包 /// <remark>abu 2008-03-10 </remark> /// </summary> /// <param name="imPacket">The im packet.</param> internal void SendReceiveReplyPacket(ReceiveIMPacket inPacket) { ReceiveIMReplyPacket reply = new ReceiveIMReplyPacket(inPacket.Reply, QQClient); reply.Sequence = inPacket.Sequence; reply.Command = inPacket.Command;//修正支持2009发来的消息 QQClient.PacketManager.SendPacket(reply); }
///<summary> ///处理接收信息 ///</summary> ///<param name="packet">The packet.</param> private void ProcessReceiveIM(ReceiveIMPacket packet) { QQEventArgs<ReceiveIMPacket, OutPacket> e = new QQEventArgs<ReceiveIMPacket, OutPacket>(client, packet, null); //先发送接收确认 this.client.MessageManager.SendReceiveReplyPacket(packet); if (packet.IsDuplicated) { client.MessageManager.OnReceiveDuplicatedIM(e); return; } switch (packet.Header.Type) { case RecvSource.FRIEND_0801: case RecvSource.FRIEND_0802: case RecvSource.FRIEND_09: case RecvSource.FRIEND_09SP1: case RecvSource.STRANGER: switch (packet.NormalHeader.Type) { case NormalIMType.TEXT: client.MessageManager.OnReceiveNormalIM(e); break; case NormalIMType.TCP_REQUEST: break; case NormalIMType.ACCEPT_TCP_REQUEST: break; case NormalIMType.REJECT_TCP_REQUEST: break; case NormalIMType.UDP_REQUEST: break; case NormalIMType.ACCEPT_UDP_REQUEST: break; case NormalIMType.REJECT_UDP_REQUEST: break; case NormalIMType.NOTIFY_IP: break; case NormalIMType.ARE_YOU_BEHIND_FIREWALL: break; case NormalIMType.ARE_YOU_BEHIND_PROXY: break; case NormalIMType.YES_I_AM_BEHIND_PROXY: break; case NormalIMType.NOTIFY_FILE_AGENT_INFO: break; case NormalIMType.REQUEST_CANCELED: break; case NormalIMType.Vibration: if (e.InPacket.Vibration.IsShake) { client.MessageManager.OnReceiveVibration(e); } else { client.MessageManager.OnInputState(e); } break; default: client.MessageManager.OnReceiveUnknownIM(e); break; } break; case RecvSource.BIND_USER: break; case RecvSource.MOBILE: break; case RecvSource.MEMBER_LOGIN_HINT: break; case RecvSource.MOBILE_QQ: break; case RecvSource.MOBILE_QQ_2: break; case RecvSource.QQLIVE: break; case RecvSource.PROPERTY_CHANGE: client.FriendManager.OnUserPropertyChanged(e); break; case RecvSource.TEMP_SESSION: client.MessageManager.OnReceiveTempSessionIM(e); break; case RecvSource.UNKNOWN_CLUSTER: break; case RecvSource.CREATE_CLUSTER: case RecvSource.ADDED_TO_CLUSTER: client.ClusterManager.OnAddedToCluster(e); break; case RecvSource.DELETED_FROM_CLUSTER: client.ClusterManager.OnRemovedFromCluster(e); break; case RecvSource.REQUEST_JOIN_CLUSTER: client.ClusterManager.OnHasRequestJoinCluster(e); break; case RecvSource.APPROVE_JOIN_CLUSTER: client.ClusterManager.OnApprovedJoinCluster(e); break; case RecvSource.REJECT_JOIN_CLUSTER: client.ClusterManager.OnRejectJoinCluster(e); break; case RecvSource.TEMP_CLUSTER: break; case RecvSource.CLUSTER: case RecvSource.CLUSTER_09: client.ClusterManager.OnReceiveClusterIM(e); break; case RecvSource.CLUSTER_NOTIFICATION: break; case RecvSource.SYS_MESSAGE: if (packet.SystemMessageType == SystemIMType.QQ_RECV_IM_KICK_OUT) { client.MessageManager.OnReceiveKickOut(e); } else { client.MessageManager.OnReceiveSysMessage(e); } break; case RecvSource.SIGNATURE_CHANGE: client.FriendManager.OnSignatureChanged(e); break; case RecvSource.CUSTOM_HEAD_CHANGE: break; case RecvSource.INPUT_STATE_CHANGE: client.MessageManager.OnInputState(e); break; default: break; } }