// Copyright (c) 2015 D1SM.net package net.fs.rudp.message; import net.fs.utils.ByteIntConvert; import net.fs.utils.ByteShortConvert; import java.net.DatagramPacket; import java.net.InetAddress; public class DataMessage extends Message{ short sType=net.fs.rudp.message.MessageType.sType_DataMessage; int sequence=0; int length=0; byte [] data; byte [] dpData; int timeId; InetAddress dstAddress; int dstPort; int offset; int firstSendTimeId; long firstSendTime; public DataMessage(int sequence,byte[] dataq,int offset,short length, int connectId,int clientId){ this.sequence=sequence; this.offset=offset; this.length=(short) (length); this.data=new byte[this.length]; this.clientId=clientId; this.connectId=connectId; System.arraycopy(dataq, offset, this.data, 0, length); this.length=data.length; } public void create(int timeId){ this.timeId=timeId; dpData=new byte[this.length+16+8]; ByteShortConvert.toByteArray(ver, dpData, 0); //add: ver ByteShortConvert.toByteArray(sType, dpData, 2); //add: service type ByteIntConvert.toByteArray(connectId, dpData, 4); //add: sequence ByteIntConvert.toByteArray(clientId, dpData, 8); //add: sequence ByteIntConvert.toByteArray(this.sequence, dpData, 12); //add: sequence ByteShortConvert.toByteArray((short) this.length, dpData, 16); //add:length ByteIntConvert.toByteArray(this.timeId, dpData, 18); //add: sequence System.arraycopy(this.data, 0, dpData, 22, this.length); dp=new DatagramPacket(dpData,dpData.length); dp.setAddress(dstAddress); dp.setPort(dstPort); } public DataMessage(DatagramPacket dp){ this.dp=dp; dpData=dp.getData(); ver=ByteShortConvert.toShort(dpData, 0); sType=ByteShortConvert.toShort(dpData, 2); connectId=ByteIntConvert.toInt(dpData, 4); clientId=ByteIntConvert.toInt(dpData, 8); sequence=ByteIntConvert.toInt(dpData, 12); length=ByteShortConvert.toShort(dpData, 16); timeId=ByteIntConvert.toInt(dpData, 18); data=new byte[length]; System.arraycopy(dpData, 22, data, 0, length); } public int getSequence(){ return sequence; } public byte[] getData(){ return data; } public int getLength(){ return length; } public int getTimeId() { return timeId; } public void setTimeId(int timeId) { this.timeId = timeId; } public InetAddress getDstAddress() { return dstAddress; } public void setDstAddress(InetAddress dstAddress) { this.dstAddress = dstAddress; } public int getDstPort() { return dstPort; } public void setDstPort(int dstPort) { this.dstPort = dstPort; } public int getFirstSendTimeId() { return firstSendTimeId; } public void setFirstSendTimeId(int firstSendTimeId) { this.firstSendTimeId = firstSendTimeId; } public long getFirstSendTime() { return firstSendTime; } public void setFirstSendTime(long firstSendTime) { this.firstSendTime = firstSendTime; } }