JML

net.sf.jqql.packets.out._05
Class TransferPacket

java.lang.Object
  extended by net.sf.jqql.packets.Packet
      extended by net.sf.jqql.packets.OutPacket
          extended by net.sf.jqql.packets._05OutPacket
              extended by net.sf.jqql.packets.out._05.TransferPacket

public class TransferPacket
extends _05OutPacket

 send data packet
 If send basic info
     1. head
    2. unknown 8 byte
    3. session id, 4 byte
    4. unknownn 4 byte
    5. length of data behind, 2 byte, exclude packet tail, include this.
    6. unknown 2 byte, same with part 5?
    7. photo's md5
    8. file name's md5
    9. file length, 4 byte
     10. file name length , 2 byte
    11. file name
    12. unknown 8 byte
    13. tail

 传送数据包
 如果传送基本信息
 1. 头部
 2. 未知的8字节
 3. session id, 4字节
 4. 未知的4字节
 5. 后面的数据长度,2字节,不包括包尾,包括本身
 6. 未知2字节,和5相同?
 7. 图片的md5
 8. 文件名的md5
 9. 文件长度,4字节
 10. 文件名长度,2字节
 11. 文件名
 12. 未知的8字节
 13. 尾部
 

 If send data info
  1. head
 2. unknown 8 byte. If it's not the last fragment, its 0x1000000000000001, otherwise, random byte
 3. session id, 4 byte
 4. unknown 4 byte
 5. data fragment length, 2 byte
 6. data fragment
 7. packet tail

 如果传送数据信息
 1. 头部
 2. 未知的8字节,如果不是最后一个分片,则为,0x1000000000000001,如果是,则为随机字节
 3. session id, 4字节
 4. 未知的4字节
 5. 数据分片长度,2字节
 6. 数据分片
 7. 包尾
 
 If it's receiver, the packet is used to notice server to begin send face
 1 .head
 2. unknown 8 byte
 3. seesion id, 4 byte
 4. unknown 4 byte
 5. length of data behind, 2 byte
 6. 4 byte, all 0
 7. tail

 如果是接收方,则这个包用来通知服务器开始发送表情
 1. 头部
 2. 未知的8字节
 3. session id, 4字节
 4. 未知的4字节
 5. 后面的数据长度,2字节
 6. 4个字节,全0
 7. 尾部
 
 If it's the reply to file data from the receiver:
 1. head
 2. unknown 8 byte
 3. session ed, 4 byte
 4. unknown 4 byte
 5. length of data behind, 2 byte
 6. one byte, 0x02, so part 5 is often 0x0001
 7. tail

 如果是接收方对文件数据的回复,则为
 1. 头部
 2. 未知的8字节
 3. session id, 4字节
 4. 未知的4字节
 5. 后面的数据长度,2字节
 6. 一个字节,0x02,所以5一般是0x0001
 7. 尾部
 

Author:
luma

Field Summary
 
Fields inherited from class net.sf.jqql.packets.OutPacket
ack, key, resendCountDown, sendCount, seq, timeout
 
Fields inherited from class net.sf.jqql.packets.Packet
bodyBuf, bodyDecrypted, command, crypter, ds, duplicated, header, log, sequence, source, user
 
Constructor Summary
TransferPacket(ByteBuffer buf, int length, QQUser user)
           
TransferPacket(QQUser user)
          construct a send data request packet 构造一个请求发送数据包
TransferPacket(QQUser user, boolean data, boolean last)
           
 
Method Summary
protected  int getCryptographStart()
           
 String getFileName()
           
 byte[] getFragment()
           
 int getImageLength()
           
 byte[] getMd5()
           
 String getPacketName()
           
 int getSessionId()
           
 boolean isDataReply()
           
 boolean isRequestSend()
           
protected  void putBody(ByteBuffer buf)
          initialize packet body 初始化包体
 void setDataReply(boolean dataReply)
           
 void setFileName(String fileName)
           
 void setFragment(byte[] fragment)
           
 void setImageLength(int imageLength)
           
 void setMd5(byte[] md5)
           
 void setRequestSend(boolean requestSend)
           
 void setSessionId(int sessionId)
           
 
Methods inherited from class net.sf.jqql.packets._05OutPacket
decryptBody, encryptBody, getBodyBytes, getFamily, getHeadLength, getLength, getTailLength, parseHeader, parseTail, postFill, putHead, putTail, toString, validateHeader
 
Methods inherited from class net.sf.jqql.packets.OutPacket
dump, fill, getKey, getNextSeq, getSendCount, getTimeout, needAck, needResend, parseBody, setKey, setSendCount, setTimeout
 
Methods inherited from class net.sf.jqql.packets.Packet
equals, 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
 

Constructor Detail

TransferPacket

public TransferPacket(QQUser user,
                      boolean data,
                      boolean last)
Parameters:
user -
data - true to indicate this is data fragment true表示这是数据分片
last - true to indicate this is the last data fragment true表示这是最后一个数据分片

TransferPacket

public TransferPacket(QQUser user)
construct a send data request packet 构造一个请求发送数据包

Parameters:
user -

TransferPacket

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

getCryptographStart

protected int getCryptographStart()
Specified by:
getCryptographStart in class Packet
Returns:
start position of cryptograph, relative to the first byte of packet body. if this packet is unknown packet, return -1, this method only available to some protocol family. 密文的起始位置,这个位置是相对于包体的第一个字节来说的,如果这个包是未知包, 返回-1,这个方法只对某些协议族有意义

getPacketName

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

putBody

protected void putBody(ByteBuffer buf)
Description copied from class: Packet
initialize packet body 初始化包体

Specified by:
putBody in class Packet
Parameters:
buf - ByteBuffer

getImageLength

public int getImageLength()
Returns:
Returns the imageLength.

setImageLength

public void setImageLength(int imageLength)
Parameters:
imageLength - The imageLength to set.

getMd5

public byte[] getMd5()
Returns:
Returns the md5.

setMd5

public void setMd5(byte[] md5)
Parameters:
md5 - The md5 to set.

getSessionId

public int getSessionId()
Returns:
Returns the sessionId.

setSessionId

public void setSessionId(int sessionId)
Parameters:
sessionId - The sessionId to set.

getFileName

public String getFileName()
Returns:
Returns the fileName.

setFileName

public void setFileName(String fileName)
Parameters:
fileName - The fileName to set.

getFragment

public byte[] getFragment()
Returns:
Returns the fragment.

setFragment

public void setFragment(byte[] fragment)
Parameters:
fragment - The fragment to set.

isRequestSend

public boolean isRequestSend()
Returns:
Returns the requestSend.

setRequestSend

public void setRequestSend(boolean requestSend)
Parameters:
requestSend - The requestSend to set.

isDataReply

public boolean isDataReply()

setDataReply

public void setDataReply(boolean dataReply)

JML