JML

net.sf.jqql.packets.in._03
Class GetCustomHeadDataReplyPacket

java.lang.Object
  extended by net.sf.jqql.packets.Packet
      extended by net.sf.jqql.packets.InPacket
          extended by net.sf.jqql.packets._03InPacket
              extended by net.sf.jqql.packets.in._03.GetCustomHeadDataReplyPacket

public class GetCustomHeadDataReplyPacket
extends _03InPacket

 apply custom head data reply packet
 1. head
 2. unknown 4 byte
 3. unknown 4 byte
 4. length of content behind, 2 byte, exclusive
 5. unknown 1 byte, 0x00
 6. friend's QQ number, 4 byte
 7. custom head timestamp, 4 byte
 8. custom head file size, 4 byte
 9.  data absolute offset, 4 byte
 10. data length 4 byte
 11. data

 Note: General speaking, source field of packet is 0x0000. If it's client version, the packet has no body. This is a new packet
    or it's a kind of error. It's hard to judge.  At present, we treat it as an error. Soure is not parsed when it's client version.

 请求自定义头像数据的回复包
 1. 包头
 2. 未知的4字节
 3. 未知的4字节
 4. 后面的内容长度,2字节,exclusive
 5. 未知1字节,0x00
 6. 好友QQ号,4字节
 7. 自定义头像时间戳,4字节
 8. 自定义头像文件大小,4字节
 9. 数据的绝对偏移,4字节
 10. 数据的长度,4字节
 11. 数据

 Note: 一般来说,包的source字段是0x0000,如果是客户端版本号,则其没有包体内容。这到底是应该
 看成一种新的包还是看成一种错误情况,不好说。目前把它当作错误情况,source为客户端版本号时不解析
 

Author:
luma

Field Summary
 byte[] data
           
 int dataLength
           
 int headLength
           
 int offset
           
 int qq
           
 int timestamp
           
 
Fields inherited from class net.sf.jqql.packets._03InPacket
currentFragment, serialNumber, totalFragment
 
Fields inherited from class net.sf.jqql.packets.Packet
bodyBuf, bodyDecrypted, command, crypter, ds, duplicated, header, log, sequence, source, user
 
Constructor Summary
GetCustomHeadDataReplyPacket(ByteBuffer buf, int length, QQUser user)
           
 
Method Summary
 String getPacketName()
           
protected  void parseBody(ByteBuffer buf)
          parse packet body, from begin position of buf 解析包体,从buf的开头位置解析起
 
Methods inherited from class net.sf.jqql.packets._03InPacket
decryptBody, encryptBody, equals, getBodyBytes, getCryptographStart, getFamily, getHeadLength, getLength, getTailLength, parseHeader, parseTail, putBody, putHead, putTail, toString
 
Methods inherited from class net.sf.jqql.packets.InPacket
validateHeader
 
Methods inherited from class net.sf.jqql.packets.Packet
dump, getCommand, getHeader, getSequence, getSource, hash, hashCode, isDuplicated, setDuplicated, setHeader, setSequence
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 

Field Detail

qq

public int qq

timestamp

public int timestamp

headLength

public int headLength

offset

public int offset

dataLength

public int dataLength

data

public byte[] data
Constructor Detail

GetCustomHeadDataReplyPacket

public GetCustomHeadDataReplyPacket(ByteBuffer buf,
                                    int length,
                                    QQUser user)
                             throws PacketParseException
Throws:
PacketParseException
Method Detail

getPacketName

public String getPacketName()
Overrides:
getPacketName in class Packet
Returns:
descriptive name of packet 包的描述性名称

parseBody

protected void parseBody(ByteBuffer buf)
                  throws PacketParseException
Description copied from class: Packet
parse packet body, from begin position of buf 解析包体,从buf的开头位置解析起

Specified by:
parseBody in class Packet
Parameters:
buf - ByteBuffer
Throws:
PacketParseException - if parse error 如果解析出错

JML