Example #1
0
 /// <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;
     }
 }