// Path: src/main/java/net/fs/utils/ByteIntConvert.java
// public class ByteIntConvert {
// 
//     public static int toInt(byte[] b, int offset) {
//         return b[offset + 3] & 0xff | (b[offset + 2] & 0xff) << 8
//                 | (b[offset + 1] & 0xff) << 16 | (b[offset] & 0xff) << 24;
//     }
// 
//     public static void toByteArray(int n, byte[] buf, int offset) {
//         buf[offset] = (byte) (n >> 24);
//         buf[offset + 1] = (byte) (n >> 16);
//         buf[offset + 2] = (byte) (n >> 8);
//         buf[offset + 3] = (byte) n;
//     }
// 
// }
// 
// Path: src/main/java/net/fs/utils/ByteShortConvert.java
// public final class ByteShortConvert {
// 
//     public static byte[] toByteArray(short i, byte[] b, int offset) {
//         b[offset] = (byte) (i >> 8);
//         b[offset + 1] = (byte) (i);
//         return b;
//     }
// 
// 
//     public static short toShort(byte[] b, int offset) {
//         return (short) (((b[offset] << 8) | b[offset + 1] & 0xff));
//     }
// 
//     //无符号
//     public static byte[] toByteArrayUnsigned(int s, byte[] b, int offset) {
//         b[offset] = (byte) (s >> 8);
//         b[offset + 1] = (byte) (s);
//         return b;
//     }
// 
//     //无符号
//     public static int toShortUnsigned(byte[] b, int offset) {
//         int i = 0;
//         i |= b[offset] & 0xFF;
//         i <<= 8;
//         i |= b[offset + 1] & 0xFF;
//         return i;
//     }
// 
// 
// }


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

package net.fs.rudp.message;




public class PingMessage2 extends Message {

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

    byte[] dpData = new byte[16];

    int pingId;

    public PingMessage2(int connectId, int clientId, int pingId) {
        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
        dp = new DatagramPacket(dpData, dpData.length);
    }

    public PingMessage2(DatagramPacket dp) {
        this.dp = dp;
        dpData = dp.getData();
        ver = ByteShortConvert.toShort(dpData, 0);
        sType = ByteShortConvert.toShort(dpData, 2);

// Path: src/main/java/net/fs/utils/ByteIntConvert.java
// public class ByteIntConvert {
// 
//     public static int toInt(byte[] b, int offset) {
//         return b[offset + 3] & 0xff | (b[offset + 2] & 0xff) << 8
//                 | (b[offset + 1] & 0xff) << 16 | (b[offset] & 0xff) << 24;
//     }
// 
//     public static void toByteArray(int n, byte[] buf, int offset) {
//         buf[offset] = (byte) (n >> 24);
//         buf[offset + 1] = (byte) (n >> 16);
//         buf[offset + 2] = (byte) (n >> 8);
//         buf[offset + 3] = (byte) n;
//     }
// 
// }
// 
// Path: src/main/java/net/fs/utils/ByteShortConvert.java
// public final class ByteShortConvert {
// 
//     public static byte[] toByteArray(short i, byte[] b, int offset) {
//         b[offset] = (byte) (i >> 8);
//         b[offset + 1] = (byte) (i);
//         return b;
//     }
// 
// 
//     public static short toShort(byte[] b, int offset) {
//         return (short) (((b[offset] << 8) | b[offset + 1] & 0xff));
//     }
// 
//     //无符号
//     public static byte[] toByteArrayUnsigned(int s, byte[] b, int offset) {
//         b[offset] = (byte) (s >> 8);
//         b[offset + 1] = (byte) (s);
//         return b;
//     }
// 
//     //无符号
//     public static int toShortUnsigned(byte[] b, int offset) {
//         int i = 0;
//         i |= b[offset] & 0xFF;
//         i <<= 8;
//         i |= b[offset + 1] & 0xFF;
//         return i;
//     }
// 
// 
// }


// Path: src/main/java/net/fs/rudp/message/PingMessage2.java
import net.fs.utils.ByteIntConvert;
import net.fs.utils.ByteShortConvert;
import java.net.DatagramPacket;

package net.fs.rudp.message;




public class PingMessage2 extends Message {

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

    byte[] dpData = new byte[16];

    int pingId;

    public PingMessage2(int connectId, int clientId, int pingId) {
        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
        dp = new DatagramPacket(dpData, dpData.length);
    }

    public PingMessage2(DatagramPacket dp) {
        this.dp = dp;
        dpData = dp.getData();
        ver = ByteShortConvert.toShort(dpData, 0);
        sType = ByteShortConvert.toShort(dpData, 2);

        connectId = ByteIntConvert.toInt(dpData, 4);
