?? basicfamilyparser.java
字號:
/* (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 + -