⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 basicfamilyparser.java

📁 lumaQQ的源文件
💻 JAVA
📖 第 1 页 / 共 2 页
字号:

	/* (non-Javadoc)
	 * @see edu.tsinghua.lumaqq.qq.packets.IParser#parseIncoming(java.nio.ByteBuffer, int, edu.tsinghua.lumaqq.qq.beans.QQUser)
	 */
	public InPacket parseIncoming(ByteBuffer buf, int len, QQUser user) throws PacketParseException {
	    try {
            switch(getCommand(buf, user)) {
                case QQ.QQ_CMD_REQUEST_LOGIN_TOKEN:
                    return new RequestLoginTokenReplyPacket(buf, len, user);
            	case QQ.QQ_CMD_KEEP_ALIVE:
            	    return new KeepAliveReplyPacket(buf, len, user);
            	case QQ.QQ_CMD_MODIFY_INFO:
            	    return new ModifyInfoReplyPacket(buf, len, user);
            	case QQ.QQ_CMD_ADD_FRIEND_EX:
            		return new AddFriendExReplyPacket(buf, len, user);
            	case QQ.QQ_CMD_SEARCH_USER:
            	    return new SearchUserReplyPacket(buf, len, user);
            	case QQ.QQ_CMD_DELETE_FRIEND:
            	    return new DeleteFriendReplyPacket(buf, len, user);
            	case QQ.QQ_CMD_REMOVE_SELF:
            	    return new RemoveSelfReplyPacket(buf, len, user);
            	case QQ.QQ_CMD_ADD_FRIEND_AUTH:
            	    return new AddFriendAuthResponseReplyPacket(buf, len, user);
            	case QQ.QQ_CMD_GET_USER_INFO:
            		return new GetUserInfoReplyPacket(buf, len, user);
            	case QQ.QQ_CMD_CHANGE_STATUS:
            		return new ChangeStatusReplyPacket(buf, len, user);
            	case QQ.QQ_CMD_SEND_IM:
            		return new SendIMReplyPacket(buf, len, user);
            	case QQ.QQ_CMD_RECV_IM:
            	    return new ReceiveIMPacket(buf, len, user);
            	case QQ.QQ_CMD_LOGIN:
            		return new LoginReplyPacket(buf, len, user);
            	case QQ.QQ_CMD_GET_FRIEND_LIST:
            		return new GetFriendListReplyPacket(buf, len, user);
            	case QQ.QQ_CMD_GET_ONLINE_OP:
            		return new GetOnlineOpReplyPacket(buf, len, user);
            	case QQ.QQ_CMD_RECV_MSG_SYS:
            	    return new SystemNotificationPacket(buf, len, user);
            	case QQ.QQ_CMD_RECV_MSG_FRIEND_CHANGE_STATUS:
            		return new FriendChangeStatusPacket(buf, len, user);
            	case QQ.QQ_CMD_UPLOAD_GROUP_FRIEND:
            		return new UploadGroupFriendReplyPacket(buf, len, user);
            	case QQ.QQ_CMD_DOWNLOAD_GROUP_FRIEND:
            		return new DownloadGroupFriendReplyPacket(buf, len, user);
            	case QQ.QQ_CMD_GROUP_DATA_OP:
            		return new GroupDataOpReplyPacket(buf, len, user);
            	case QQ.QQ_CMD_FRIEND_DATA_OP:
            		return new FriendDataOpReplyPacket(buf, len, user);
            	case QQ.QQ_CMD_CLUSTER_CMD:
            		return new ClusterCommandReplyPacket(buf, len, user);
            	case QQ.QQ_CMD_REQUEST_KEY:
            		return new RequestKeyReplyPacket(buf, len, user);
            	case QQ.QQ_CMD_ADVANCED_SEARCH:
            	    return new AdvancedSearchUserReplyPacket(buf, len, user);
            	case QQ.QQ_CMD_CLUSTER_DATA_OP:
            	    return new GetTempClusterOnlineMemberReplyPacket(buf, len, user);
            	case QQ.QQ_CMD_AUTHORIZE:
            		return new AuthorizeReplyPacket(buf, len, user);
            	case QQ.QQ_CMD_SIGNATURE_OP:
            		return new SignatureOpReplyPacket(buf, len, user);
            	case QQ.QQ_CMD_WEATHER_OP:
            		return new WeatherOpReplyPacket(buf, len, user);
            	case QQ.QQ_CMD_USER_PROPERTY_OP:
            		return new UserPropertyOpReplyPacket(buf, len, user);
            	case QQ.QQ_CMD_FRIEND_LEVEL_OP:
            		return new FriendLevelOpReplyPacket(buf, len, user);
            	case QQ.QQ_CMD_SEND_SMS:
            		return new SendSMSReplyPacket(buf, len, user);
            	case QQ.QQ_CMD_TEMP_SESSION_OP:
            		return new TempSessionOpReplyPacket(buf, len, user);
            	case QQ.QQ_CMD_PRIVACY_DATA_OP:
            		return new PrivacyDataOpReplyPacket(buf, len, user);
            	default:
            		return new UnknownInPacket(buf, len, user);
            }
        } catch (PacketParseException e) {
            // 如果解析失败,返回null
            buf.position(offset);
            return new UnknownInPacket(buf, len, user);
        }
	}

	/* (non-Javadoc)
	 * @see edu.tsinghua.lumaqq.qq.packets.IParser#parseOutcoming(java.nio.ByteBuffer, int, edu.tsinghua.lumaqq.qq.beans.QQUser)
	 */
	public OutPacket parseOutcoming(ByteBuffer buf, int len, QQUser user) throws PacketParseException {
	    try {
            switch(getCommand(buf, user)) {
                case QQ.QQ_CMD_REQUEST_LOGIN_TOKEN:
                    return new RequestLoginTokenPacket(buf, len, user);
            	case QQ.QQ_CMD_KEEP_ALIVE:
            	    return new KeepAlivePacket(buf, len, user);
            	case QQ.QQ_CMD_MODIFY_INFO:
            	    return new ModifyInfoPacket(buf, len, user);
            	case QQ.QQ_CMD_SEARCH_USER:
            	    return new SearchUserPacket(buf, len, user);
            	case QQ.QQ_CMD_ADD_FRIEND_EX:
            		return new AddFriendExPacket(buf, len, user);
            	case QQ.QQ_CMD_DELETE_FRIEND:
            	    return new DeleteFriendPacket(buf, len, user);
            	case QQ.QQ_CMD_REMOVE_SELF:
            	    return new RemoveSelfPacket(buf, len, user);
            	case QQ.QQ_CMD_ADD_FRIEND_AUTH:
            	    return new AddFriendAuthResponsePacket(buf, len, user);
            	case QQ.QQ_CMD_GET_USER_INFO:
            		return new GetUserInfoPacket(buf, len, user);
            	case QQ.QQ_CMD_CHANGE_STATUS:
            		return new ChangeStatusPacket(buf, len, user);
            	case QQ.QQ_CMD_SEND_IM:
            		return new SendIMPacket(buf, len, user);
            	case QQ.QQ_CMD_RECV_IM:
            	    return new ReceiveIMReplyPacket(buf, len, user);
            	case QQ.QQ_CMD_LOGIN:
            		return new LoginPacket(buf, len, user);
            	case QQ.QQ_CMD_GET_FRIEND_LIST:
            		return new GetFriendListPacket(buf, len, user);
            	case QQ.QQ_CMD_GET_ONLINE_OP:
            		return new GetOnlineOpPacket(buf, len, user);
            	case QQ.QQ_CMD_UPLOAD_GROUP_FRIEND:
            		return new UploadGroupFriendPacket(buf, len, user);
            	case QQ.QQ_CMD_DOWNLOAD_GROUP_FRIEND:
            		return new DownloadGroupFriendPacket(buf, len, user);
            	case QQ.QQ_CMD_GROUP_DATA_OP:
            		return new GroupDataOpPacket(buf, len, user);
            	case QQ.QQ_CMD_FRIEND_DATA_OP:
            		return new FriendDataOpPacket(buf, len, user);
            	case QQ.QQ_CMD_ADVANCED_SEARCH:
            	    return new AdvancedSearchUserPacket(buf, len, user);
            	case QQ.QQ_CMD_CLUSTER_CMD:    		
            	    return new ClusterCommandPacket(buf, len, user);
            	case QQ.QQ_CMD_REQUEST_KEY:
            		return new RequestKeyPacket(buf, len, user);
            	case QQ.QQ_CMD_LOGOUT:
            	    return new LogoutPacket(buf, len, user);
            	case QQ.QQ_CMD_AUTHORIZE:
            		return new AuthorizePacket(buf, len, user);
            	case QQ.QQ_CMD_SIGNATURE_OP:
            		return new SignatureOpPacket(buf, len, user);
            	case QQ.QQ_CMD_WEATHER_OP:
            		return new WeatherOpPacket(buf, len, user);
            	case QQ.QQ_CMD_USER_PROPERTY_OP:
            		return new UserPropertyOpPacket(buf, len, user);
            	case QQ.QQ_CMD_FRIEND_LEVEL_OP:
            		return new FriendLevelOpPacket(buf, len, user);
            	case QQ.QQ_CMD_SEND_SMS:
            		return new SendSMSPacket(buf, len, user);
            	case QQ.QQ_CMD_TEMP_SESSION_OP:
            		return new TempSessionOpPacket(buf, len, user);
            	case QQ.QQ_CMD_PRIVACY_DATA_OP:
            		return new PrivacyDataOpPacket(buf, len, user);
            	default:
            		return new UnknownOutPacket(buf, len, user);
            }
        } catch (PacketParseException e) {
            // 如果解析失败,返回一个未知包
            buf.position(offset);
            return new UnknownOutPacket(buf, len, user);
        }
	}

	/* (non-Javadoc)
	 * @see edu.tsinghua.lumaqq.qq.packets.IParser#isDuplicatedNeedReply(edu.tsinghua.lumaqq.qq.packets.InPacket)
	 */
	public boolean isDuplicatedNeedReply(InPacket in) {
		return in.getCommand() == QQ.QQ_CMD_RECV_IM;
	}

	/* (non-Javadoc)
	 * @see edu.tsinghua.lumaqq.qq.packets.IParser#relocate(java.nio.ByteBuffer)
	 */
	public int relocate(ByteBuffer buf) {
		int offset = buf.position();
		if(buf.remaining() < 2)
			return offset;
		int len = buf.getChar(offset);
		if(len <= 0 || offset + len > buf.limit())
			return offset;
		else
			return offset + len; 
	}

	/* (non-Javadoc)
	 * @see edu.tsinghua.lumaqq.qq.packets.IParser#getHistory()
	 */
	public PacketHistory getHistory() {
		return history;
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -