package net.fs.rudp.message;

import net.fs.utils.ByteIntConvert;
import net.fs.utils.ByteShortConvert;

import java.net.DatagramPacket;


public class PingMessage extends Message {

    public short sType = net.fs.rudp.message.MessageType.sType_PingMessage;

    byte[] dpData = new byte[20];

    int pingId;
    int downloadSpeed, uploadSpeed;

    public PingMessage(int connectId, int clientId, int pingId, int downloadSpeed, int uploadSpeed) {
        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(pingId, dpData, 12); //add: sequence
        ByteShortConvert.toByteArray((short) (downloadSpeed / 1024), dpData, 16);
        ByteShortConvert.toByteArray((short) (uploadSpeed / 1024), dpData, 18);
        dp = new DatagramPacket(dpData, dpData.length);
    }

    public PingMessage(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);
        pingId = ByteIntConvert.toInt(dpData, 12);
        downloadSpeed = ByteShortConvert.toShort(dpData, 16);
        uploadSpeed = ByteShortConvert.toShort(dpData, 18);
    }

    public int getPingId() {
        return pingId;
    }

    public void setPingId(int pingId) {
        this.pingId = pingId;
    }

    public int getDownloadSpeed() {
        return downloadSpeed;
    }

    public void setDownloadSpeed(int downloadSpeed) {
        this.downloadSpeed = downloadSpeed;
    }

    public int getUploadSpeed() {
        return uploadSpeed;
    }

    public void setUploadSpeed(int uploadSpeed) {
        this.uploadSpeed = uploadSpeed;
    }

}